PROCS - Assembler Source 

   0 ;
   1 ;procs
   2 ;
   3             jmp STIMER
   4             jmp LTIMER
   5             jmp NPRINT
   6             jmp RAMPOS
   7             jmp SMOVE
   8             jmp TALK
   9             jmp LISTEN
  10             jmp IECIN
  11             jmp IECOUT
  12             jmp UNTALK
  13             jmp LOAD
  14             jmp SAVE
  15             jmp JOYSTICK
  16             jmp BYTEWORT
  17             jmp NMENU
  18             jmp GETSTRING
  19             jmp PRSTRING
  20             jmp NINPUT
  21             jmp BYTEASC
  22             jmp INCTUS
  23             jmp LOADSTOP
  24             jmp PFILL
  25             jmp PCOPY
  26             jmp MULT8BIT
  27             jmp ZSDEL
  28             jmp ZSFILL
  29             jmp WAITSTICK
  30             jmp GUPSTRING
  31             jmp LOADMAP
  32             jmp LDMAPEXE
  33             jmp GETMAP
  34             jmp GETTUS
  35             jmp SPRBITPOS
  36             jmp NEARSPR
  37             jmp SETWPNSHP
  38             jmp SETARMSHP
  39             jmp PRSKILL
  40             jmp MAPPRINT
  41             jmp SCRPRINT
  42             jmp MAPPRCOL
  43             jmp SPELLCOPY
  44             jmp SETPLRSPR
  45             jmp SETVOICE1
  46             jmp SETVOICE2
  47             jmp PLPOSCMP
  48             jmp SEARCHEXE
  49             jmp MAPPOS
  50             jmp MAPSWITCH
  51             jmp GETPRPTR
  52             jmp GETPOSPTR
  53             jmp CLOCK
  54             jmp MAPONSCR
  55             jmp ESTOP
  56             jmp RANDOMIZE
  57             jmp LIGHTCHK
  58             jmp LIGHT1
  59             jmp SETETIMER
  60             jmp PLPOSIT
  61             jmp RESTLOAD
  62             jmp WAITBUTTN
  63             jmp SWAPCOPY
  64             jmp RIGHTPOS
  65             jmp CLOCKEXE
  66             jmp POSTOBLCK
  67             jmp CURSELOAD
  68             jmp ZAHLPR
  69             jmp MAINTIMER
  70             jmp CTRTORAM
  71             jmp DISKWAIT
  72             jmp NORMTEXT
  73             jmp STATPRINT
  74             jmp BYTEHEAD
  75             jmp GOLDAB
  76             jmp GOLDZU
  77             jmp PCLOCKSET
  78             jmp STATUEEXE
  79             jmp DOORSET
  80 ;
  81 ;
  82 NPRINT      sta NPZEICHEN
  83             txa
  84             pha
  85             tya
  86             pha
  87             lda NPZEICHEN
  88             and #127
  89             cmp #4
  90             bcs NPRINTC
  91             asl
  92             tax
  93             lda NPDAT,X
  94             sta NPRINTA+1
  95             lda NPDAT+1,X
  96             sta NPRINTA+2
  97 NPRINTA     jsr $FFFF
  98             jmp NPRINTX
  99 ;
 100 NPDAT       dat NPRINT1,NPRINT2,NPRINT3,NPRINT4
 101 ;
 102 NPRINTC     ldx NPSPALTE
 103             cpx #21
 104             bcc NPRINTCA
 105             jsr NPRINT2
 106 NPRINTCA    lda NPZEICHEN
 107             and #63
 108 NPRINTCB    sta VRAM3+DPOS,X
 109             lda #NPCOL
 110 NPRINTCC    sta CRAM+DPOS,X
 111             inc NPSPALTE
 112 NPRINTX     pla
 113             tay
 114             pla
 115             tax
 116             lda NPZEICHEN
 117             sta NPOLDCHR
 118             dex
 119 ;
 120 ;
 121 NPRINT1     lda NPOLDCHR
 122             and #63
 123             beq NPRINT1X
 124             lda A
 125             pha
 126             lda #ZANZ
 127             sta A
 128 NPRINT1A    jsr NPRINT2
 129             dec A
 130             bne NPRINT1A
 131             pla
 132             sta A
 133 NPRINT1X    dex
 134 ;
 135 ;
 136 NPRINT2     ldx #20
 137             lda NPFLG
 138             bne NPRINT2A
 139             jsr NPRINT21
 140             jmp NPRINT2B
 141 NPRINT2A    jsr NPRINT22
 142 NPRINT2B    jsr NPRINT23
 143             lda #1
 144             jsr LTIMER
 145             ldx #0
 146             stx NPSPALTE
 147             dex
 148 ;
 149 NPRINT21    lda VRAM3+690,X
 150             sta VRAM3+650,X
 151             lda VRAM3+730,X
 152             sta VRAM3+690,X
 153             lda VRAM3+770,X
 154             sta VRAM3+730,X
 155             lda VRAM3+810,X
 156             sta VRAM3+770,X
 157             lda #32
 158             sta VRAM3+810,X
 159             rts
 160             bpl NPRINT21
 161             inc NPCTR
 162             dex
 163 ;
 164 NPRINT22    lda VRAM3+770,X
 165             sta VRAM3+810,X
 166             lda VRAM3+730,X
 167             sta VRAM3+770,X
 168             lda VRAM3+690,X
 169             sta VRAM3+730,X
 170             lda VRAM3+650,X
 171             sta VRAM3+690,X
 172             lda #32
 173             sta VRAM3+650,X
 174             rts
 175             bpl NPRINT22
 176             dec NPCTR
 177             dex
 178 ;
 179 ;
 180 NPRINT23    ldx #3
 181 NPRINT23F   lda ZPC,X
 182             pha
 183             rts
 184             bpl NPRINT23F
 185             lda NPCTR
 186             bmi NPRINT23A
 187             cmp #4
 188             bcc NPRINT23B
 189             lda #0
 190             dat $2C
 191 NPRINT23A   lda #3
 192             sta NPCTR
 193 NPRINT23B   asl
 194             tax
 195             lda NP23DAT,X
 196             sta ZPC
 197             lda NP23DAT+1,X
 198             sta ZPC+1
 199             lda #ZSRAM2+512<
 200             sta ZPD
 201             lda #ZSRAM2+512>
 202             sta ZPD+1
 203 ;
 204             ldy #127
 205 NPRINT23C   lda (ZPC),Y
 206             sta (ZPD),Y
 207             dey
 208             bpl NPRINT23C
 209             ldx #0
 210 NPRINT23D   pla
 211             sta ZPC,X
 212             inx
 213             cpx #4
 214             bcc NPRINT23D
 215             dex
 216 ;
 217 NP23DAT     dat SCROLLRAM,SCROLLRAM+$80,SCROLLRAM+$100,SCROLLRAM+$180
 218 ;
 219 ;
 220 NPRINT3     lda #0
 221             sta NPFLG
 222             lda #VRAM3+DPOS<
 223             ldy #VRAM3+DPOS>
 224             ldx #CRAM+DPOS>
 225             bne NPRINT4A
 226 ;
 227 NPRINT4     lda #1
 228             sta NPFLG
 229             lda #VRAM3+UPOS<
 230             ldy #VRAM3+UPOS>
 231             ldx #CRAM+UPOS>
 232 NPRINT4A    sta NPRINTCB+1
 233             sty NPRINTCB+2
 234             sta NPRINTCC+1
 235             stx NPRINTCC+2
 236             dex
 237 ;
 238 ;
 239 STIMER      sta CIA1+5
 240             lda #255
 241             sta CIA1+4
 242             lda #%00001001
 243             sta CIA1+14
 244 STIMERA     lda CIA1+14
 245             and #1
 246             bne STIMERA
 247             sta CIA1+14
 248             dex
 249 ;
 250 LTIMER      sta CIA1+6
 251             lda #0
 252             sta CIA1+7
 253             lda #255
 254             sta CIA1+4
 255             sta CIA1+5
 256             lda #%01001001
 257             sta CIA1+15
 258             lda #%00000001
 259             sta CIA1+14
 260 LTIMERB     lda CIA1+15
 261             and #1
 262             bne LTIMERB
 263             sta CIA1+15
 264             sta CIA1+14
 265             dex
 266 ;
 267 ;
 268 JOYSTICK    jsr KOLLISION
 269             jsr DISPLAY
 270             lda #224
 271             sta CIA1+2
 272             lda CIA1
 273             and #%00011111
 274             sta STICKVAR
 275             ldx #0
 276 ;
 277             cmp #31
 278             beq STICKBB
 279             inx
 280 STICKBA     lsr
 281             bcc STICKBB
 282             inx
 283             cpx #5
 284             bne STICKBA
 285 STICKBB     lda STICKVAR
 286             and #16
 287             dex
 288 ;
 289 ;
 290 SMOVE       sta SMOVEPTR
 291             lda SMOVEDATA,Y
 292             sta SMOVEB+1
 293             lda SMOVEDATB,Y
 294             sta SMOVEB+2
 295             txa
 296             tay
 297             asl
 298             tax
 299 SMOVEB      jsr $FFFF
 300             php
 301             tya
 302             tax
 303             plp
 304             dex
 305 ;
 306 SMOVEDATA   dat SMOVE1<,SMOVE2<,SMOVE3<,SMOVE4<
 307 SMOVEDATB   dat SMOVE1>,SMOVE2>,SMOVE3>,SMOVE4>
 308 ;
 309 ;
 310 ;
 311 SMOVE1      lda V1+4,X
 312             sec
 313             sbc SMOVEPTR
 314             bcc SMOVE1X
 315             sta V1+4,X
 316             clc
 317             dex
 318 SMOVE1X     sec
 319             dex
 320 ;
 321 SMOVE2      lda V1+4,X
 322             clc
 323             adc SMOVEPTR
 324             cmp #190
 325             bcs SMOVE1X
 326             sta V1+4,X
 327             clc
 328             dex
 329 ;
 330 SMOVE3      lda V1+3,X
 331             sec
 332             sbc SMOVEPTR
 333             sta SMOVEPTR
 334             bcs SMOVE3X
 335             lda V1+1
 336             and ZWEIERPOT,Y
 337             beq SMOVE1X
 338 SMOVE3A     lda V1+1
 339             eor ZWEIERPOT,Y
 340             sta V1+1
 341 SMOVE3X     lda SMOVEPTR
 342             sta V1+3,X
 343             clc
 344             dex
 345 ;
 346 SMOVE4      lda V1+1
 347             and ZWEIERPOT,Y
 348             bne SMOVE4A
 349             lda V1+3,X
 350             clc
 351             adc SMOVEPTR
 352             sta SMOVEPTR
 353             bcs SMOVE3A
 354             sta V1+3,X
 355             dex
 356 SMOVE4A     lda V1+3,X
 357             clc
 358             adc SMOVEPTR
 359             cmp #112
 360             bcs SMOVE1X
 361             sta V1+3,X
 362             dex
 363 ;
 364 ;
 365 TALK        lda NSECTOR
 366             ora #128
 367             bmi LISTENB
 368 ;
 369 ;
 370 LISTEN      lda NSECTOR
 371             and #127
 372 LISTENB     sta NSECTOR
 373 LISTENC     bit CIA2
 374             bvc LISTENC
 375 ;
 376 ;
 377 SNDATN      lda #0
 378             sta NTOUTCTR
 379             jsr SETATN
 380             bvc LISTENC
 381 ;
 382 SNDATNLP    bit CIA2
 383             bvc SNDATNA
 384             inc NTOUTCTR
 385             bpl SNDATNLP
 386             jmp TIMEOUT
 387 ;
 388 SNDATNA     jsr STOPATN
 389             lda NTRACK
 390             bpl SNDATNB
 391             lda #255
 392             jmp IECOUT
 393 SNDATNB     jsr IECOUT
 394             lda NSECTOR
 395             jsr IECOUT
 396             lda NSECTOR
 397             and #127
 398             sta NSECTOR
 399             clc
 400             dex
 401 ;
 402 ;
 403 SETATN      lda #ATN
 404             sei
 405             ora CIA2
 406             bit CIA2
 407             bvc SETATNA
 408             sta CIA2
 409 SETATNA     cli
 410             nop
 411             nop
 412             dex
 413 ;
 414 STOPATN     nop
 415             nop
 416             sei
 417             lda CIA2
 418             and #255-ATN
 419             sta CIA2
 420             cli
 421             dex
 422 ;
 423 UNTALK      jsr WAITFLOP
 424 UNTALKA     bit CIA2
 425             bvc UNTALKA
 426             jsr SETATN
 427 UNTALKB     bit CIA2
 428             bvs UNTALKB
 429             jmp STOPATN
 430 ;
 431 ;
 432 IECOUT      sta NIECDAT
 433             txa
 434             pha
 435             jsr CLRCIA
 436             ldx #8
 437             jsr WAITCIHI
 438 IECOUTA     lsr NIECDAT
 439             bcc IECOUTB
 440             jsr SENDBIT0
 441             bne IECOUTC
 442 IECOUTB     jsr SENDBIT1
 443 IECOUTC     jsr WAITFLOP
 444             jsr CLRCIA
 445             jsr WAITFLOP
 446             rts
 447             bne IECOUTA
 448             pla
 449             tax
 450             dex
 451 ;
 452 ;
 453 IECIN       txa
 454             pha
 455             jsr CLRCIA
 456             ldx #8
 457             jsr WAITCIHI
 458 IECINA      lda #CLOCKOUT
 459             sei
 460             ora CIA2
 461             sta CIA2
 462             cli
 463             jsr WAITFLOP
 464             lda CIA2
 465             asl
 466             ror NIECDAT
 467             jsr CLRCIA
 468             jsr WAITFLOP
 469             rts
 470             bne IECINA
 471             pla
 472             tax
 473             lda NIECDAT
 474             dex
 475 ;
 476 ;
 477 CLRCIA      lda #7
 478             sei
 479             and CIA2
 480             sta CIA2
 481             cli
 482             dex
 483 ;
 484 WAITFLOP    txa
 485             ldx #7
 486 WAITFLOPA   rts
 487             bne WAITFLOPA
 488             tax
 489             dex
 490 ;
 491 WAITCIHI    lda #CLOCKIN
 492             bit CIA2
 493             beq WAITCIHI
 494             dex
 495 ;
 496 SENDBIT0    lda #CLOCKOUT+DATAOUT
 497             dat $2C
 498 ;
 499 SENDBIT1    lda #CLOCKOUT
 500             sei
 501             ora CIA2
 502             sta CIA2
 503             cli
 504             dex
 505 ;
 506 TIMEOUT     jmp TIMEOUT
 507 ;
 508 ;
 509 LOAD        stx LOADC+1
 510             sty LOADC+2
 511             sta F
 512 LOADA       jsr TALK
 513             bcs LOADA
 514             ldy #0
 515 LOADB       jsr IECIN
 516 LOADC       sta $FFFF,Y
 517             iny
 518             bne LOADB
 519             jsr INCTUS
 520             inc LOADC+2
 521             dec F
 522             bne LOADA
 523             dex
 524 ;
 525 ;
 526 SAVE        stx SAVEB+1
 527             sty SAVEB+2
 528             sta F
 529 SAVEA       jsr LISTEN
 530             bcs SAVEA
 531             ldy #0
 532 SAVEB       lda $FFFF,Y
 533             jsr IECOUT
 534             iny
 535             bne SAVEB
 536             jsr INCTUS
 537             inc SAVEB+2
 538             dec F
 539             bne SAVEA
 540             dex
 541 ;
 542 ;
 543 NMENU       sta NMENUANZ
 544             inc NMENUANZ
 545             stx NMENUSPTR
 546             sty NMENUSPTR+1
 547             lda #0
 548             jsr NPRINT
 549             lda #1
 550             sta NMENUDIR
 551             lda #132
 552             sta NMENUZEI
 553             lda #4
 554             sta E
 555             lda #255
 556             sta F
 557             lda #0
 558             sta NMENUCTR
 559             lda NMENUFLG
 560             bpl NMENUA
 561             jsr NMGETSTR
 562             jsr PRSTRING
 563 ;
 564 NMENUA      jsr NMNEXTSTR
 565             bcs NMENUB
 566             jsr NMPRNTSTR
 567             lda F
 568             bpl NMENUAA
 569             lda NMENUCTR
 570             sta F
 571 NMENUAA     dec E
 572             bne NMENUA
 573 ;
 574 NMENUB      lda F
 575             sta NMENUCTR
 576             ldx E
 577             inx
 578             stx NMENUZEI
 579             jsr NMSELON
 580 ;
 581 NMENUC      jsr WAITSTICK
 582             beq NMENUX
 583             cpx #2
 584             bcc NMENUCA
 585             lda NMENUANZ
 586             sta NMENUCTR
 587             jmp NMENUX
 588 ;
 589 NMENUCA     stx NMENUDIR
 590             jsr NMNEXTSTR
 591             bcs NMENUC
 592             jsr NMSELOFF
 593             jsr NMNEXTZEI
 594             jsr NMPRNTSTR
 595             jsr NMSELON
 596 NMENUD      lda #1
 597             jsr LTIMER
 598             jmp NMENUC
 599 ;
 600 NMENUX      jsr NMSELOFF
 601             lda #2
 602             jsr NPRINT
 603             lda #0
 604             jsr NPRINT
 605             dec NMENUCTR
 606             lda NMENUCTR
 607             dex
 608 ;
 609 ;
 610 NMSELON     lda NMENUCTR
 611             bne NMSELONA
 612             bit NMENUFLG
 613             bvs NMSELONA
 614             inc NMENUZEI
 615             lda NMENULCTR
 616             sta NMENUCTR
 617 NMSELONA    lda #NMENUCOL
 618             dat $2C
 619 ;
 620 NMSELOFF    lda #NPCOL
 621             sta A
 622             stx XREG
 623             sty YREG
 624             lda NMENUFLG
 625             and #8
 626             bne NMSELOFFX
 627 ;
 628             lda NMENUZEI
 629             and #7
 630             tay
 631             lda NMSELDAT,Y
 632             tay
 633             ldx #21
 634             lda A
 635 NMSELOFFA   sta CRAM+UPOS,Y
 636             dey
 637             rts
 638             bne NMSELOFFA
 639 NMSELOFFX   ldx XREG
 640             ldy YREG
 641             dex
 642 ;
 643 NMSELDAT    dat 20,60,100,140,180
 644 ;
 645 ;
 646 NMNEXTZEI   lda NMENUZEI
 647             and #7
 648             sta NMENUZEI
 649             lda NMENUDIR
 650             beq NMNXTZ2
 651 ;
 652             lda NMENUZEI
 653             cmp #4
 654             bcs NMNXTZ2A
 655             inc NMENUZEI
 656             dex
 657 ;
 658 NMNXTZ2     lda NMENUZEI
 659             beq NMNXTZ2A
 660             dec NMENUZEI
 661             dex
 662 NMNXTZ2A    ora #128
 663             sta NMENUZEI
 664             dex
 665 ;
 666 ;
 667 NMNEXTSTR   lda NMENUCTR
 668             sta NMENULCTR
 669             ldx NMENUDIR
 670             beq NMNXTSTB
 671 ;
 672 NMNXTSTA    lda NMENUCTR
 673             cmp NMENUANZ
 674             bcs NMNXTSTAX
 675 NMNXTSTAA   inc NMENUCTR
 676             jsr NMGETSTR
 677             bcs NMNXTSTA
 678             dex
 679 NMNXTSTAX   lda NMENULCTR
 680             sta NMENUCTR
 681             sec
 682             dex
 683 ;
 684 NMNXTSTB    lda NMENUCTR
 685             beq NMNXTSTAX
 686             ldx NMENUFLG
 687             bmi NMNXTSTBA
 688             cmp #2
 689             bcc NMNXTSTAX
 690 NMNXTSTBA   dec NMENUCTR
 691             jsr NMGETSTR
 692             bcs NMNXTSTB
 693             dex
 694 ;
 695 ;
 696 NMPRNTSTR   lda NMENUZEI
 697             bpl NMPRSTRX
 698 ;
 699             lda NMENUDIR
 700             eor #1
 701             clc
 702             adc #2
 703             jsr NPRINT
 704             lda #1
 705             jsr NPRINT
 706 ;
 707             jsr PRSTRING
 708             lda NMENUFLG
 709             and #%00110000
 710             beq NMPRSTRX
 711             tax
 712             lda NMENUCTR
 713             beq NMPRSTRX
 714             cmp NMENUANZ
 715             beq NMPRSTRX
 716 ;
 717             cpx #32
 718             bcs NMPRSTRA
 719             tay
 720             dey
 721             lda (NMENUNPTR),Y
 722             tax
 723             ldy #0
 724             beq NMPRSTRB
 725 ;
 726 NMPRSTRA    asl
 727             tay
 728             dey
 729             dey
 730             lda (NMENUNPTR),Y
 731             tax
 732             iny
 733             lda (NMENUNPTR),Y
 734             tay
 735 NMPRSTRB    lda #16
 736             sta NPSPALTE
 737             sec
 738             jsr BYTEASC
 739 ;
 740 NMPRSTRX    dex
 741 ;
 742 ;
 743 NMGETSTR    lda NMENUCTR
 744             bne NMGETSTRA
 745             ldx NMENUHPTR
 746             ldy NMENUHPTR+1
 747             clc
 748             dex
 749 ;
 750 NMGETSTRA   cmp NMENUANZ
 751             bcc NMGETSTRC
 752             lda NMENUFLG
 753             and #8
 754             bne NMGETSTRB
 755             ldx NMENUTXT
 756             ldy NMENUTXT+1
 757             clc
 758             dex
 759 NMGETSTRB   ldx NMENUTXT
 760             ldy NMENUTXT+1
 761             lda #1
 762             jsr GETSTRING
 763             clc
 764             dex
 765 ;
 766 NMGETSTRC   lda NMENUFLG
 767             lsr
 768             bcs NMGETSTR1
 769             lsr
 770             bcs NMGETSTR2
 771 ;
 772 ;
 773 NMGETSTR3   ldy NMENUCTR
 774             dey
 775             lda (NMENUWPTR),Y
 776             bne NMGETSTR1
 777 NMGETST3X   sec
 778             dex
 779 NMGETSTR1   ldx NMENUCTR
 780             rts
 781             txa
 782             ldx NMENUSPTR
 783             ldy NMENUSPTR+1
 784             jsr GETSTRING
 785             clc
 786             dex
 787 ;
 788 ;
 789 NMGETSTR2   lda NMENUWPTR
 790             sta ZPA
 791             lda NMENUWPTR+1
 792             ldy NMENUCTR
 793             dey
 794 NMGETST2A   lsr
 795             ror ZPA
 796             dey
 797             bpl NMGETST2A
 798             bcc NMGETST3X
 799             bcs NMGETSTR1
 800 ;
 801 ;
 802 GETSTRING   stx GSTRINGB+1
 803             sty GSTRINGB+2
 804             tax
 805             beq GSTRINGX
 806 GSTRINGA    ldy #0
 807 GSTRINGB    lda $FFFF,Y
 808             bmi GSTRINGC
 809             iny
 810             bne GSTRINGB
 811 GSTRINGC    iny
 812             tya
 813             clc
 814             adc GSTRINGB+1
 815             sta GSTRINGB+1
 816             bcc GSTRINGD
 817             inc GSTRINGB+2
 818 GSTRINGD    rts
 819             bne GSTRINGA
 820 GSTRINGX    ldx GSTRINGB+1
 821             ldy GSTRINGB+2
 822             dex
 823 ;
 824 ;
 825 PRSTRING    stx PRSTRINGA+1
 826             sty PRSTRINGA+2
 827             ldx #0
 828 PRSTRINGA   lda $FFFF,X
 829             eor #38
 830             eor #105
 831             jsr NPRINT
 832             bmi PRSTRINGX
 833             inx
 834             bne PRSTRINGA
 835 PRSTRINGX   dex
 836 ;
 837 ;
 838 NINPUT      sta NMENUANZ
 839             stx NMENUDIR
 840             sty NMENUCTR
 841             lda #0
 842             sta NMENUSPTR
 843             sta NMENUSPTR+1
 844             lda NPFLG
 845             bne NINPUTA
 846             lda #VRAM3+DPOS<
 847             ldy #VRAM3+DPOS>
 848             bne NINPUTB
 849 NINPUTA     lda #VRAM3+UPOS<
 850             ldy #VRAM3+UPOS>
 851 NINPUTB     clc
 852             adc NMENUANZ
 853             sta NMENUHPTR
 854             sta NMENUNPTR
 855             sty NMENUHPTR+1
 856             tya
 857             clc
 858             adc #CRAM-VRAM3>
 859             sta NMENUNPTR+1
 860 ;
 861             ldy #4
 862             sty NMENUFLG
 863 NINPUTC     lda #48
 864             sta (NMENUHPTR),Y
 865             lda #NPCOL
 866             sta (NMENUNPTR),Y
 867             dey
 868             bpl NINPUTC
 869             ldy #3
 870             jsr INPUTCOLA
 871 ;
 872 NINPUTD     jsr JOYSTICK
 873             beq NINPUTX
 874             rts
 875             bmi NINPUTD
 876 ;
 877             txa
 878             asl
 879             tax
 880             lda NINPUTDTA,X
 881             sta NINPUTE+1
 882             lda NINPUTDTA+1,X
 883             sta NINPUTE+2
 884             ldy NMENUFLG
 885 NINPUTE     jsr NINPUT1
 886             lda #1
 887             jsr LTIMER
 888             jmp NINPUTD
 889 ;
 890 NINPUTX     jsr INPUTCOLB
 891             lda #2
 892             jsr LTIMER
 893             ldx NMENUSPTR
 894             ldy NMENUSPTR+1
 895             dex
 896 ;
 897 NINPUTDTA   dat NINPUT1,NINPUT2,NINPUT3,NINPUT4
 898 ;
 899 ;
 900 NINPUT1     lda (NMENUHPTR),Y
 901             cmp #57
 902             bcs NINPUT1X
 903             clc
 904             lda NMENUSPTR
 905             adc BTESTRDTA,Y
 906             tax
 907             lda NMENUSPTR+1
 908             adc BTESTRDTB,Y
 909             bcs NINPUT1X
 910             jsr NINPUTCMP
 911             bcc NINPUT1A
 912             dex
 913 NINPUT1A    stx NMENUSPTR
 914             sta NMENUSPTR+1
 915             lda (NMENUHPTR),Y
 916             adc #1
 917             sta (NMENUHPTR),Y
 918 NINPUT1X    dex
 919 ;
 920 ;
 921 NINPUT2     lda (NMENUHPTR),Y
 922             cmp #49
 923             bcc NINPUT2X
 924             sec
 925             lda NMENUSPTR
 926             sbc BTESTRDTA,Y
 927             sta NMENUSPTR
 928             lda NMENUSPTR+1
 929             sbc BTESTRDTB,Y
 930             sta NMENUSPTR+1
 931             sec
 932             lda (NMENUHPTR),Y
 933             sbc #1
 934             sta (NMENUHPTR),Y
 935 NINPUT2X    dex
 936 ;
 937 ;
 938 NINPUT3     lda NMENUFLG
 939             beq NINPUT2X
 940             jsr INPUTCOLB
 941             dec NMENUFLG
 942             jmp INPUTCOLA
 943 ;
 944 NINPUT4     lda NMENUFLG
 945             cmp #4
 946             bcs NINPUT2X
 947             jsr INPUTCOLB
 948             inc NMENUFLG
 949             jmp INPUTCOLA
 950 ;
 951 ;
 952 NINPUTCMP   cmp NMENUCTR
 953             bcc NINPTCMPA
 954             bne NINPTCMPB
 955             cpx NMENUDIR
 956             bcc NINPTCMPA
 957             bne NINPTCMPB
 958 NINPTCMPA   clc
 959             dex
 960 NINPTCMPB   sec
 961             dex
 962 ;
 963 INPUTCOLA   lda #NMENUCOL
 964             dat $2C
 965 INPUTCOLB   lda #NPCOL
 966             ldy NMENUFLG
 967             sta (NMENUNPTR),Y
 968             dex
 969 ;
 970 ;
 971 BYTESTR     stx ZPA
 972             sty ZPA+1
 973             sta BTESTRDTC
 974             sta BTESTRDTC+1
 975             sta BTESTRDTC+2
 976             sta BTESTRDTC+3
 977             ora #128
 978             sta BTESTRDTC+4
 979             ldx #0
 980 BYTESTRA    sec
 981             lda ZPA
 982             sbc BTESTRDTA,X
 983             sta A
 984             lda ZPA+1
 985             sbc BTESTRDTB,X
 986             bcc BYTESTRB
 987             sta ZPA+1
 988             lda A
 989             sta ZPA
 990             inc BTESTRDTC,X
 991             bne BYTESTRA
 992 BYTESTRB    inx
 993             cpx #5
 994             bcc BYTESTRA
 995             dex
 996 ;
 997 BTESTRDTA   dat 10000<,1000<,100,10,1
 998 BTESTRDTB   dat 10000>,1000>,0,0,0
 999 ;
1000 ;
1001 BYTEASC     clv
1002 BYTEASCA    php
1003             lda #'0'
1004             jsr BYTESTR
1005             ldx #BTESTRDTC<
1006             ldy #0
1007 BYTEASCC    lda BTESTRDTC,Y
1008             cmp #'0'
1009             bne BYTEASCE
1010             plp
1011             php
1012             bcc BYTEASCD
1013             inc NPSPALTE
1014             lda #' '
1015             sta BTESTRDTC,Y
1016 BYTEASCD    inx
1017             iny
1018             cpy #4
1019             bcc BYTEASCC
1020 BYTEASCE    ldy #4
1021 BYTEASCF    lda BTESTRDTC,Y
1022             eor #105
1023             eor #38
1024             sta BTESTRDTC,Y
1025             dey
1026             bpl BYTEASCF
1027             iny
1028             plp
1029             bvs BYTEASCX
1030             jsr PRSTRING
1031 BYTEASCX    dex
1032 ;
1033 ;
1034 BYTEWORT    lda #0
1035             jsr BYTESTR
1036             jmp ZAHLPR
1037 ;
1038 ;
1039 BYTEHEAD    bit ZWEIERPOT+6
1040             sec
1041             jmp BYTEASCA
1042 ;
1043 ;
1044 ZAHLPR      ldx #0
1045 ZAHLPRA     stx A
1046             lda BTESTRDTC+1,X
1047             and #127
1048             ldx ZAHLTXT
1049             ldy ZAHLTXT+1
1050             jsr GUPSTRING
1051             ldx A
1052             inx
1053             cpx #4
1054             bcc ZAHLPRA
1055             dex
1056 ;
1057 ;
1058 CMPTRACK    cmp #18
1059             bcc CMPTRACKA
1060             cmp #25
1061             bcc CMPTRACKB
1062             cmp #31
1063             bcc CMPTRACKC
1064             ldx #17
1065             dat $2C
1066 CMPTRACKA   ldx #21
1067             dat $2C
1068 CMPTRACKB   ldx #19
1069             dat $2C
1070 CMPTRACKC   ldx #18
1071             dex
1072 ;
1073 ;
1074 INCTUS      inc NSECTOR
1075             lda NTRACK
1076             jsr CMPTRACK
1077             lda NSECTOR
1078             stx NSECTOR
1079             cmp NSECTOR
1080             sta NSECTOR
1081             bcc INCSECTX
1082             inc NTRACK
1083             lda NTRACK
1084             cmp #36
1085             bcs INCSECTX
1086             lda #0
1087             sta NSECTOR
1088 INCSECTB    clc
1089 INCSECTX    dex
1090 ;
1091 ;
1092 PFILL       ldy #0
1093 PFILLA      sta (ZPA),Y
1094             iny
1095             bne PFILLA
1096             inc ZPA+1
1097             rts
1098             bne PFILLA
1099             dex
1100 ;
1101 ;
1102 PCOPY       ldy #0
1103 PCOPYA      lda (ZPA),Y
1104             sta (ZPB),Y
1105             iny
1106             bne PCOPYA
1107             inc ZPA+1
1108             inc ZPB+1
1109             rts
1110             bne PCOPYA
1111             dex
1112 ;
1113 ;
1114 SWAPCOPY    sta ZPA+1
1115             sty ZPB+1
1116             lda #0
1117             sta ZPA
1118             sta ZPB
1119             tay
1120 SWAPCOPYA   lda (ZPB),Y
1121             pha
1122             lda (ZPA),Y
1123             sta (ZPB),Y
1124             pla
1125             sta (ZPA),Y
1126             iny
1127             bne SWAPCOPYA
1128             inc ZPA+1
1129             inc ZPB+1
1130             rts
1131             bne SWAPCOPYA
1132             dex
1133 ;
1134 ;
1135 MULT8BIT    sta A
1136             sty B
1137             stx XREG
1138             lda #8
1139             sta C
1140             ldx #0
1141             ldy #0
1142 MULT8BITA   txa
1143             asl
1144             tax
1145             tya
1146             rol
1147             tay
1148             asl A
1149             bcc MULT8BITB
1150             clc
1151             txa
1152             adc B
1153             tax
1154             tya
1155             adc #0
1156             tay
1157 MULT8BITB   dec C
1158             bne MULT8BITA
1159             txa
1160             ldx XREG
1161             dex
1162 ;
1163 ;
1164 ZSDEL       lda #255
1165             sta ZSDELFLG
1166             jsr COLDEL
1167             lda #255
1168             sta ZSANIFLG
1169             lda #0
1170             sta ZSMCFLG
1171             dex
1172 ;
1173 ZSFILL      lda #0
1174             sta ZSANIFLG
1175             sta ZSDELFLG
1176             lda #255
1177             jmp COLFILL
1178 ;
1179 COLDEL      sta ZPC
1180             lda #0
1181             tax
1182             ldy #39
1183             bne COLFILLIN
1184 ;
1185 COLFILL     sta ZPC
1186             lda #255
1187             ldx #19
1188             ldy #20
1189 COLFILLIN   sta A
1190             stx B
1191             sty C
1192             lda #20
1193             sta F
1194 ;
1195 COLFILLA    lda #CRAM<
1196             ldy #CRAM>
1197             ldx MOMVRAM
1198             sta ZPA
1199             sty ZPA+1
1200             sta ZPB
1201             stx ZPB+1
1202             lda #15
1203             sta D
1204 ;
1205 COLFILLB    lda #1
1206             sta E
1207 COLFILLC    ldx E
1208             ldy B,X
1209             lda A
1210             beq COLFILLD
1211             lda (ZPB),Y
1212             tax
1213             lda ZS1FARBDT,X
1214 COLFILLD    sta (ZPA),Y
1215             dec E
1216             bpl COLFILLC
1217             lda ZPA
1218             clc
1219             adc #40
1220             sta ZPA
1221             sta ZPB
1222             bcc COLFILLE
1223             inc ZPA+1
1224             inc ZPB+1
1225 COLFILLE    dec D
1226             bne COLFILLB
1227             lda ZPC
1228             jsr STIMER
1229             inc B
1230             dec C
1231             dec F
1232             bne COLFILLA
1233             dex
1234 ;
1235 ;
1236 WAITBUTTN   jsr JOYSTICK
1237             bne WAITBUTTN
1238             php
1239 WAITBUTNA   lda CIA1
1240             and #16
1241             beq WAITBUTNA
1242             plp
1243             dex
1244 ;
1245 WAITSTICK   jsr JOYSTICK
1246             php
1247             beq WAITSTCKX
1248             rts
1249             bpl WAITSTCKX
1250             plp
1251             bne WAITSTICK
1252             php
1253 WAITSTCKX   jmp WAITBUTNA
1254 ;
1255 ;
1256 GUPSTRING   jsr GETSTRING
1257             jmp PRSTRING
1258 ;
1259 ;
1260 LOADMAP     lda MAPFLG
1261             bne LOADMAPX
1262             jsr LDCTRCHK
1263             bcc LOADMAPA
1264             jmp SETLDPAR
1265 LOADMAPA    jsr LDMAPEXE
1266 LOADMAPX    dex
1267 ;
1268 ;
1269 LDCTRCHK    ldx #1
1270 LDCTRCHKA   lda MAPCX32,X
1271             bmi LDCTRCHKB
1272             cmp #32
1273             bcs LDCTRCHKC
1274             rts
1275             bpl LDCTRCHKA
1276             clc
1277             dex
1278 ;
1279 LDCTRCHKB   dec MAPSPALTE,X
1280             ldy #0
1281             lda #31
1282             bne LDCTRCHKD
1283 LDCTRCHKC   inc MAPSPALTE,X
1284             ldy #1
1285             lda #0
1286 LDCTRCHKD   sta MAPCX32,X
1287             txa
1288             beq LDCTRCHKX
1289             ldx #7
1290 LDCTRCHKX   sec
1291             dex
1292 ;
1293 ;
1294 SETLDPAR    lda MAPZEILE
1295             sta LDZEILE,X
1296             lda MAPSPALTE
1297             sta LDSPALTE,X
1298             lda MAPCX128
1299             lsr
1300             lsr
1301             lsr
1302             lsr
1303             lsr
1304             sta LDRAMPLO,X
1305             lda MAPCY128
1306             lsr
1307             lsr
1308             lsr
1309             lsr
1310             lsr
1311             sta LDRAMPHI,X
1312 ;
1313             tya
1314             pha
1315             asl
1316             sta A
1317             txa
1318             and #4
1319             clc
1320             adc A
1321             tay
1322             lda #2
1323             sta A
1324 SETLDPARA   lda SETLDPDAT,Y
1325             pha
1326             clc
1327             adc LDSPALTE,X
1328             sta LDSPALTE,X
1329             pla
1330             clc
1331             adc LDRAMPLO,X
1332             bmi SETLDPARB
1333             cmp #4
1334             bcc SETLDPARC
1335             sbc #4
1336             dat $2C
1337 SETLDPARB   lda #3
1338 SETLDPARC   sta LDRAMPLO,X
1339             inx
1340             iny
1341             dec A
1342             bne SETLDPARA
1343             rts
1344             rts
1345 ;
1346             lda #3
1347             sta LDBLOKCTR,X
1348             lda #112
1349             sta LDCALLCTR,X
1350             cpx LDPTR
1351             bne SETLDPARX
1352             lda LDDIR,X
1353             bmi SETLDPARX
1354             lda LDBYTECTR
1355             beq SETLDPARX
1356             lda #0
1357             sta LDBYTECTR
1358             lda EOMFLG
1359             bmi SETLDPARX
1360             jsr UNTALK
1361 ;
1362 SETLDPARX   pla
1363             sta LDDIR,X
1364             dex
1365 ;
1366 SETLDPDAT   dat 255,0
1367             dat 2,0
1368             dat 0,255
1369             dat 0,2
1370 ;
1371 ;
1372 LDMAPEXE    ldy #2
1373 LDMAPEXEA   ldx LDPTR
1374             lda LDDIR,X
1375             bpl LDMAPEXEC
1376             txa
1377             beq LDMAPEXEB
1378             lda #0
1379             dat $2C
1380 LDMAPEXEB   lda #7
1381             sta LDPTR
1382             dey
1383             bne LDMAPEXEA
1384             dex
1385 ;
1386 ;
1387 LDMAPEXEC   lda LDBYTECTR
1388             bne LDMAPEXEH
1389 ;
1390 LDMAPEXED   lda #1
1391             ora LDBYTECTR
1392             sta LDBYTECTR
1393             lda LDSPALTE,X
1394             cmp #20
1395             bcs LDMEXEDA
1396             lda LDZEILE,X
1397             cmp #32
1398             bcc LDMAPEXEE
1399 LDMEXEDA    lda #VOID
1400             sta NSECTOR
1401             lda #255
1402             sta EOMFLG
1403             bne LDMAPEXEG
1404 ;
1405 LDMAPEXEE   lda #0
1406             sta EOMFLG
1407 LDMAPEXEF   lda LDZEILE,X
1408             ldy #20
1409             jsr MULT8BIT
1410             ldx LDPTR
1411             clc
1412             adc LDSPALTE,X
1413             tax
1414             tya
1415             adc #0
1416             tay
1417             jsr GETTUS
1418             stx NTRACK
1419             sty NSECTOR
1420             jsr EBLCKCHK
1421             jsr TALK
1422 ;
1423 LDMAPEXEG   ldx LDPTR
1424             lda LDRAMPLO,X
1425             tay
1426             lda LMEXEDATA,Y
1427             sta LDATRAM
1428             lda LDRAMPHI,X
1429             tay
1430             lda LMEXEDATB,Y
1431             sta LDATRAM+1
1432 ;
1433 LDMAPEXEH   dec LDCALLCTR,X
1434 LDMAPEXEI   jsr LDMAPEXE1
1435             bcc LDMAPEXEJ
1436             jsr SHIPCHK
1437             jsr STONESET
1438             ldx LDPTR
1439 LDMAPEXEL   dec LDBLOKCTR,X
1440             lda LDBLOKCTR,X
1441             bmi LDMAPEXEK
1442             jsr LDMAPEXE2
1443             ldx LDPTR
1444             lda LDCALLCTR,X
1445             bmi LDMAPEXED
1446             dex
1447 LDMAPEXEJ   lda LDCALLCTR,X
1448             bmi LDMAPEXEI
1449             dex
1450 LDMAPEXEK   sta LDDIR,X
1451 LDMAPEXEX   dex
1452 ;
1453 ;
1454 LDMAPEXE2   txa
1455             bne LDMEXE2A
1456             inx
1457 LDMEXE2A    inc LDRAMPLO,X
1458             lda LDRAMPLO,X
1459             cmp #4
1460             bcc LDMEXE2B
1461             lda #0
1462             sta LDRAMPLO,X
1463 LDMEXE2B    ldy LDPTR
1464             lda LDBLOKCTR,Y
1465             beq LDMEXE2C
1466             inc LDSPALTE,X
1467             dex
1468 LDMEXE2C    sec
1469             lda LDSPALTE,X
1470             sbc #3
1471             sta LDSPALTE,X
1472             dex
1473 ;
1474 ;
1475 LDMAPEXE1   ldy #0
1476             lda EOMFLG
1477             bmi LDMEXE1B
1478 ;
1479             bit CIA2
1480             bvs LDMEXE1A
1481             clc
1482             dex
1483 LDMEXE1A    jsr IECIN
1484             sta (LDATRAM),Y
1485             iny
1486             cpy #16
1487             bne LDMEXE1A
1488             beq LDMEXE1C
1489 ;
1490 LDMEXE1B    lda NSECTOR
1491 LDMEXE1BA   sta (LDATRAM),Y
1492             iny
1493             cpy #16
1494             bne LDMEXE1BA
1495 ;
1496 LDMEXE1C    clc
1497             lda LDATRAM
1498             adc #64
1499             sta LDATRAM
1500             bcc LDMEXE1D
1501             inc LDATRAM+1
1502 LDMEXE1D    clc
1503             lda LDBYTECTR
1504             and #%11110000
1505             adc #16
1506             sta LDBYTECTR
1507             dex
1508 ;
1509 LMEXEDATA   dat $00,$10,$20,$30
1510 LMEXEDATB   dat $B0,$B4,$B8,$BC
1511 ;
1512 EBLCKCHK    lda ENDFLG
1513             beq EBLCKCHKX
1514             ldx #2
1515             lda NTRACK
1516 EBLCKCHKA   cmp ETRACK,X
1517             beq EBLCKCHKB
1518             rts
1519             bpl EBLCKCHKA
1520             dex
1521 EBLCKCHKB   lda NSECTOR
1522             cmp ESECTOR,X
1523             bne EBLCKCHKX
1524 ;
1525             lda #34
1526             sta NTRACK
1527             lda CHGSECTOR,X
1528             sta NSECTOR
1529 ;
1530 EBLCKCHKX   dex
1531 ;
1532 ETRACK      dat 31,32,33
1533 ESECTOR     dat 1,4,7
1534 CHGSECTOR   dat 10,11,12
1535 ;
1536 ;
1537 SHIPCHK     ldy #0
1538             dat $2C
1539 SHIPCHKIN   ldy #4
1540             lda SHIPPOS,Y
1541             bmi SHIPCHKA
1542             cmp LDSPALTE,X
1543             bne SHIPCHKA
1544             lda SHIPPOS+2,Y
1545             cmp LDZEILE,X
1546             bne SHIPCHKA
1547             sty YREG
1548             stx XREG
1549             lda SHIPPOS+3,Y
1550             ldx SHIPPOS+1,Y
1551             jsr SHIPCHKB
1552             ldx XREG
1553             ldy YREG
1554 SHIPCHKA    dey
1555             bmi SHIPCHKIN
1556             dex
1557 ;
1558 SHIPCHKB    stx E
1559             ldx #0
1560             stx ZPA+1
1561             ldx #6
1562 SHIPCHKC    asl
1563             rol ZPA+1
1564             rts
1565             bne SHIPCHKC
1566             clc
1567             adc LDATRAM
1568             sta ZPA
1569             lda LDATRAM+1
1570             adc ZPA+1
1571             sec
1572             sbc #4
1573             sta ZPA+1
1574             lda SHIPCHKDT,Y
1575             ldy E
1576             sta (ZPA),Y
1577             dex
1578 ;
1579 SHIPCHKDT   dat MSHIPCHR,7,0,0,STEEDCHR
1580 ;
1581 ;
1582 STONESET    lda NTRACK
1583             and #127
1584             cmp #33
1585             bne STONESETX
1586             lda NSECTOR
1587             and #127
1588             cmp #6
1589             bne STONESETX
1590             lda MOUNTAINS
1591             beq STONESETX
1592 ;
1593             ldy #5
1594 STONESETA   lsr
1595             bcc STONESETB
1596             pha
1597             sty YREG
1598             ldx STNSETDTA,Y
1599             lda STNSETDTB,Y
1600             ldy #1
1601             jsr SHIPCHKB
1602             pla
1603             ldy YREG
1604 STONESETB   dey
1605             bpl STONESETA
1606 STONESETX   dex
1607 ;
1608 STNSETDTA   dat 4,2,2,4,6,6
1609 STNSETDTB   dat 9,10,12,13,12,10
1610 ;
1611 ;
1612 GETMAP      sec
1613             lda PLRPOSX
1614             sbc ATTACKSPA
1615             sta PLRPOSX
1616             and #31
1617             sta MAPCX32
1618             sta MAPCX128
1619             lda PLRPOSX+1
1620             sbc #0
1621             sta PLRPOSX+1
1622             sec
1623             lda PLRPOSY
1624             sbc ATTACKZEI
1625             sta PLRPOSY
1626             and #31
1627             sta MAPCY32
1628             sta MAPCY128
1629             lda PLRPOSY+1
1630             sbc #0
1631             sta PLRPOSY+1
1632             ldx #5
1633 GETMAPA     lsr PLRPOSX+1
1634             ror PLRPOSX
1635             lsr PLRPOSY+1
1636             ror PLRPOSY
1637             rts
1638             bne GETMAPA
1639             lda PLRPOSX
1640             sta MAPSPALTE
1641             lda PLRPOSY
1642             sta MAPZEILE
1643 ;
1644 GETMAPIN    lda #0
1645             sta GETMAPCTR
1646 GETMAPB     lda #0
1647             sta LDRAMPLO+7
1648             sta LDCALLCTR+7
1649             sta LDBYTECTR
1650             lda #3
1651             sta LDBLOKCTR+7
1652             lda GETMAPCTR
1653             sta LDRAMPHI+7
1654             lda MAPSPALTE
1655             sta LDSPALTE+7
1656             lda GETMAPCTR
1657             cmp #3
1658             beq GETMAPC
1659             clc
1660             adc MAPZEILE
1661             jmp GETMAPD
1662 GETMAPC     ldx MAPZEILE
1663             rts
1664             txa
1665 GETMAPD     sta LDZEILE+7
1666             lda #1
1667             sta LDDIR+7
1668             jsr LDMAPEXE
1669             inc GETMAPCTR
1670             lda GETMAPCTR
1671             cmp #4
1672             bcc GETMAPB
1673             dex
1674 ;
1675 ;
1676 GETTUS      stx A
1677             sty B
1678             ldx #0
1679 GETTUSA     lda B
1680             cmp GETTSDATB,X
1681             bcc GETTUSB
1682             bne GETTUSC
1683             lda A
1684             cmp GETTSDATA,X
1685             bcs GETTUSC
1686 GETTUSB     inx
1687             cpx #3
1688             bne GETTUSA
1689 ;
1690 GETTUSC     sec
1691             lda A
1692             sbc GETTSDATA,X
1693             sta A
1694             lda B
1695             sbc GETTSDATB,X
1696             sta B
1697             lda GETTSDATD,X
1698             sta C
1699             lda GETTSDATC,X
1700             tax
1701             beq GETTUSX
1702 ;
1703 GETTUSD     lda B
1704             bne GETTUSE
1705             lda A
1706             cmp C
1707             bcc GETTUSX
1708 GETTUSE     inx
1709             sec
1710             lda A
1711             sbc C
1712             sta A
1713             bcs GETTUSD
1714             dec B
1715             bpl GETTUSD
1716 ;
1717 GETTUSX     tay
1718             dex
1719 ;
1720 GETTSDATA   dat 598<,490<,357<,0
1721 GETTSDATB   dat 598>,490>,357>,0
1722 GETTSDATC   dat 31,25,18,1
1723 GETTSDATD   dat 17,18,19,21
1724 ;
1725 ;A/X
1726 ;
1727 SPRBITPOS   tay
1728             lda A
1729             pha
1730             lda B
1731             pha
1732             tya
1733             pha
1734 ;
1735             txa ; A-X
1736             jsr SBITPOS2
1737             sta A
1738             jsr SBITPOS1
1739             sta B
1740 ;
1741             pla
1742             tax
1743             jsr SBITPOS2
1744             sec
1745             sbc A
1746             sta A
1747             jsr SBITPOS1
1748             sec
1749             sbc B
1750             tax
1751             ldy A
1752             pla
1753             sta B
1754             pla
1755             sta A
1756             dex
1757 ;
1758 ;
1759 SBITPOS1    clc
1760             lda ZWEIERPOT,X
1761             and V1+1
1762             beq SBITPOS1A
1763             sec
1764 SBITPOS1A   lda V1+3,Y
1765             ror
1766             jmp SBITPOS2A
1767 ;
1768 ;
1769 SBITPOS2    asl
1770             tay
1771             lda V1+4,Y
1772             lsr
1773 SBITPOS2A   lsr
1774             lsr
1775             lsr
1776             dex
1777 ;
1778 ; IN X
1779 ;
1780 NEARSPR     ldx #7
1781 NEARSPRA    stx AKTSPRITE
1782             lda SMTYP,X
1783             bmi NEARSPRB
1784             lda #0
1785             jsr SPRBITPOS
1786             stx SATTPOSX
1787             sty SATTPOSY
1788             ldx AKTSPRITE
1789             lda SATTPOSY
1790             beq NEARSPRC
1791             cmp #1
1792             beq NEARSPRC
1793             cmp #255
1794             beq NEARSPRC
1795 NEARSPRB    rts
1796             bne NEARSPRA
1797             dex
1798 ;
1799 NEARSPRC    lda SATTPOSX
1800             beq NEARSPRX
1801             cmp #1
1802             beq NEARSPRX
1803             cmp #255
1804             bne NEARSPRB
1805 NEARSPRX    dex
1806 ;
1807 ;
1808 SETWPNSHP   lda V2
1809             and #%11111001
1810             sta V2
1811             lda #3
1812             sta MOMSKILL
1813             lda WSKILLS+5
1814             sta WSKILLS+13
1815             lda WSKILLS+12
1816             sta WSKILLS+14
1817             lda WSKILLS+2
1818             sta WSKILLS+15
1819             lda MOMWEAPON
1820             cmp #16
1821             bcs SETWSHPX
1822             tay
1823             lda WPNSHPDT,Y
1824             sta V2+27+1
1825             lda WPNCOLDT,Y
1826             and #15
1827             sta V2+19+1
1828             lda WPNXPSDT,Y
1829             sta V2+3+2
1830             lda WPNYPSDT,Y
1831             sta V2+4+2
1832             lda V2
1833             ora #2
1834             sta V2
1835             lda WSKILLS,Y
1836             sta MOMSKILL
1837             lda WPNCOLDT,Y
1838             bpl SETWSHPX
1839             and #127
1840             lsr
1841             lsr
1842             lsr
1843             lsr
1844             lsr
1845             tay
1846             lda WPNSHPDTB,Y
1847             sta V2+27+2
1848             lda WPNCOLDTB,Y
1849             sta V2+19+2
1850             lda WPNXPSDTB,Y
1851             sta V2+3+4
1852             lda WPNYPSDTB,Y
1853             sta V2+4+4
1854             lda V2
1855             ora #4
1856             sta V2
1857 ;
1858 SETWSHPX    lda MOMWEAPON
1859             cmp #16
1860             bcs SETWSHPA
1861             cmp #13
1862             bcc SETWSHPA
1863             lda #1
1864             dat $2C
1865 SETWSHPA    lda #0
1866             sta MEQUIPFLG
1867             jmp PRSKILL
1868 ;
1869 WPNSHPDT    dat 25,26,27,28
1870             dat 29,30,31,32
1871             dat 33,34,35,36
1872             dat 37,30,37,27
1873 ;
1874 WPNCOLDT    dat 1,7,1,137
1875             dat 1,1,3,131
1876             dat 140,163,12,140
1877             dat 193,1,193,1
1878 ;
1879 WPNXPSDT    dat 40,30,42,59
1880             dat 45,39,62,59
1881             dat 59,59,26,59
1882             dat 38,39,38,42
1883 ;
1884 WPNYPSDT    dat 191,198,187,178
1885             dat 195,192,197,178
1886             dat 178,176,199,178
1887             dat 193,192,193,187
1888 ;
1889 WPNSHPDTB   dat 38,39,40
1890 WPNCOLDTB   dat 9,3,1
1891 WPNXPSDTB   dat 59,59,60
1892 WPNYPSDTB   dat 199,197,205
1893 ;
1894 ;
1895 SETARMSHP   lda MOMARMOR
1896             cmp #8
1897             bcc SETASHPIN
1898             lda #8
1899             sta MOMARMOR
1900             lda #20
1901             bne SETASHPB
1902 SETASHPIN   and #3
1903             sta A
1904             asl
1905             asl
1906             clc
1907             adc A
1908 SETASHPB    tay
1909             sta V2+27
1910             lda ARMCOLDTA,Y
1911             sta V2+19
1912             iny
1913             tya
1914             ldx #4
1915 SETASHPC    sta V2+27,X
1916             lda ARMCOLDTA,Y
1917             sta V2+19,X
1918             iny
1919             tya
1920             inx
1921             cpx #8
1922             bcc SETASHPC
1923             ldy MOMARMOR
1924             lda SHAPE
1925             bne SETASHPD
1926             lda ARMCOLDTB,Y
1927             sta SMCOL
1928             sta V1+19
1929 ;
1930 SETASHPD    lda V2
1931             cpy #8
1932             bcs SETASHPA
1933             cpy #4
1934             bcc SETASHPA
1935             ora #%00001000
1936             dat $2C
1937 SETASHPA    and #%11110111
1938             sta V2
1939             dex
1940 ;
1941 ARMCOLDTA   dat 11,8,15,0,12
1942             dat 9,9,8,9,9
1943             dat 11,12,6,2,9
1944             dat 11,12,3,11,11
1945             dat 11,10,10,1,10
1946 ;
1947 ARMCOLDTB   dat 11,9,2,12,11,9,2,12,10
1948 ;
1949 ;
1950 PRSKILL     lda MOMSKILL
1951             and #3
1952             asl
1953             asl
1954             tax
1955 PRSKILLC    ldy #0
1956 PRSKILLB    lda PRSKILLDT,X
1957             sta VRAM3+955,Y
1958             lda #13
1959             sta CRAM+955,Y
1960             inx
1961             iny
1962             cpy #4
1963             bcc PRSKILLB
1964             dex
1965 ;
1966 PRSKILLDT   dat 118,36,110,113
1967             dat 118,36,113,108
1968             dat 118,36,115,113
1969             dat 118,109,108,108
1970 ;
1971 ;
1972 SHADERGT    bit SHADEFL
1973             bmi SHADERGTX
1974             pha
1975             stx XREG
1976             sty YREG
1977 ;
1978             ldx ZEILENCTR
1979             cpy ATTACKSPA
1980             bne SHADERGTB
1981 ;
1982 SHADERGTA   cpx ATTACKZEI
1983             beq SHADERGTZ
1984             lda ZPC+1
1985             pha
1986             lda ZPC
1987             pha
1988             lda MAPPRFLG
1989             bne SHDERGTAC
1990             inx
1991 SHDERGTAA   jsr SHADEEXEU
1992             jsr SHDEZPSB
1993             rts
1994             bpl SHDERGTAA
1995             bmi SHDERGTAX
1996 SHDERGTAC   jsr SHADEEXEU
1997             jsr SHDEZPAD
1998             inx
1999             cpx #16
2000             bcc SHDERGTAC
2001 SHDERGTAX   pla
2002             sta ZPC
2003             pla
2004             sta ZPC+1
2005             jmp SHADERGTZ
2006 ;
2007 SHADERGTB   cpx ATTACKZEI
2008             bne SHADERGTC
2009             jsr SHADEEXER
2010             jsr SHDEZPSB
2011             jsr SHADEEXER
2012             jmp SHADERGTZ
2013 ;
2014 SHADERGTC   lda MAPPRFLG
2015             bne SHDERGTCC
2016             inx
2017 SHDERGTCA   jsr SHADEEXER
2018             jsr SHDEZPSB
2019             rts
2020             bpl SHDERGTCA
2021             bmi SHADERGTZ
2022 SHDERGTCC   jsr SHADEEXER
2023             jsr SHDEZPAD
2024             inx
2025             cpx #16
2026             bcc SHDERGTCC
2027 ;
2028 SHADERGTZ   ldy YREG
2029             ldx XREG
2030             pla
2031 SHADERGTX   dex
2032 ;
2033 ;
2034 SHADELFT    bit SHADEFL
2035             bmi SHADELFTX
2036             pha
2037             stx XREG
2038             sty YREG
2039 ;
2040             ldx ZEILENCTR
2041             cpx ATTACKZEI
2042             bne SHADELFTB
2043             jsr SHADEEXEL
2044             jsr SHDEZPSB
2045             jsr SHADEEXEL
2046             jmp SHADELFTZ
2047 ;
2048 SHADELFTB   lda MAPPRFLG
2049             bne SHDELFTBC
2050             inx
2051 SHDELFTBA   jsr SHADEEXEL
2052             jsr SHDEZPSB
2053             rts
2054             bpl SHDELFTBA
2055             bmi SHADELFTZ
2056 SHDELFTBC   jsr SHADEEXEL
2057             jsr SHDEZPAD
2058             inx
2059             cpx #16
2060             bcc SHDELFTBC
2061 ;
2062 SHADELFTZ   ldy YREG
2063             ldx XREG
2064             pla
2065 SHADELFTX   dex
2066 ;
2067 ;
2068 SHADEEXER   lda SHADECHR
2069             ldy YREG
2070 SHADEXERA   sta (ZPC),Y
2071             iny
2072             cpy #40
2073             bcc SHADEXERA
2074             dex
2075 ;
2076 SHADEEXEL   lda SHADECHR
2077             ldy YREG
2078 SHADEXELA   sta (ZPC),Y
2079             dey
2080             bpl SHADEXELA
2081             dex
2082 ;
2083 SHADEEXEU   lda SHADECHR
2084             ldy YREG
2085             sta (ZPC),Y
2086             iny
2087             sta (ZPC),Y
2088             dex
2089 ;
2090 SHDEZPAD    lda ZPC
2091             clc
2092             adc #40
2093             sta ZPC
2094             bcc SHDEZPADX
2095             inc ZPC+1
2096 SHDEZPADX   dex
2097 ;
2098 SHDEZPSB    lda ZPC
2099             sec
2100             sbc #40
2101             sta ZPC
2102             bcs SHDEZPADX
2103             dec ZPC+1
2104             dex
2105 ;
2106 ;
2107 MAPPRINT    lda #7
2108             sta SCROLLFL
2109 MAPPRINTA   jsr MPEXE
2110             dec SCROLLFL
2111             bpl MAPPRINTA
2112             dex
2113 ;
2114 ;
2115 SCRPRINT    txa
2116             pha
2117             jsr MPEXE
2118             pla
2119             tax
2120             dex
2121 ;
2122 ;
2123 MPEXE       lda MAPPTR
2124             ldy MAPPTR+1
2125             sta MPEXEMPTA+1
2126             sty MPEXEMPTA+2
2127             sta MPEXEMPTB+1
2128             sty MPEXEMPTB+2
2129             lda MAPPRVR
2130             ldy MAPPRVR+1
2131             sta ZPA
2132             sty ZPA+1
2133             clc
2134             adc #40
2135             sta ZPB
2136             bcc MPEXEA
2137             iny
2138 MPEXEA      sty ZPB+1
2139 ;
2140             lda CFILLCHR
2141             bit MAPOUTFLG
2142             bpl MPEXEG
2143             and #127
2144             dat $2C
2145 MPEXEG      ora #128
2146             sta CFILLCHR
2147             lda MAPPRFLG
2148             beq MPEXEE
2149             lda ZPA
2150             sta ZPC
2151             lda ZPA+1
2152             sta ZPC+1
2153             bne MPEXERGT
2154 MPEXEE      lda ZPB
2155             sta ZPC
2156             lda ZPB+1
2157             sta ZPC+1
2158 ;
2159 MPEXERGT    ldx SPALTCTR
2160             ldy SPALTPTR
2161 MPEXERGTI   lda (ZPB),Y
2162             cmp SHADECHR
2163             bne MPEXERGTH
2164             cpy ATTACKSPA
2165             bne MPEXELFT
2166             iny
2167             bne MPEXERGTG
2168 MPEXERGTH   lda CFILLCHR
2169             bpl MPEXERGTF
2170 MPEXEMPTA   lda $B000,X
2171             bpl MPEXERGTF
2172             jsr SHADERGT
2173 MPEXERGTF   asl
2174             asl
2175             bit ZEILENCTR
2176             bmi MPEXERGTA
2177             pha
2178             sta (ZPA),Y
2179 MPEXERGTC   iny
2180             cpy #40
2181             bcs MPEXERGTE
2182             ora #1
2183             sta (ZPA),Y
2184 MPEXERGTE   pla
2185             dey
2186 MPEXERGTA   ora #2
2187             sta (ZPB),Y
2188 MPEXERGTD   iny
2189             cpy #40
2190             bcs MPEXELFT
2191             ora #3
2192             sta (ZPB),Y
2193 MPEXERGTG   inx
2194             cpx #64
2195             bcc MPEXERGTB
2196             ldx #0
2197             lda MAPFLG
2198             beq MPEXERGTB
2199             lda CFILLCHR
2200             and #63
2201             sta CFILLCHR
2202 MPEXERGTB   iny
2203             cpy #40
2204             bcc MPEXERGTI
2205 ;
2206 MPEXELFT    lda CFILLCHR
2207             bit MAPOUTFLG
2208             bpl MPEXEH
2209             and #127
2210             dat $2C
2211 MPEXEH      ora #128
2212             sta CFILLCHR
2213             lda MAPPRFLG
2214             beq MPEXEF
2215             lda ZPA
2216             sta ZPC
2217             lda ZPA+1
2218             sta ZPC+1
2219             bne MPEXELFTF
2220 MPEXEF      lda ZPB
2221             sta ZPC
2222             lda ZPB+1
2223             sta ZPC+1
2224 ;
2225 MPEXELFTF   ldx SPALTCTR
2226             rts
2227             bpl MPEXELFTD
2228             ldx #63
2229             lda MAPFLG
2230             beq MPEXELFTD
2231             lda CFILLCHR
2232             and #63
2233             sta CFILLCHR
2234 MPEXELFTD   ldy SPALTPTR
2235             beq MPEXEC
2236             bmi MPEXEC
2237             dey
2238 MPEXELFTI   lda (ZPB),Y
2239             cmp SHADECHR
2240             beq MPEXEC
2241 MPEXELFTG   lda CFILLCHR
2242             bpl MPEXELFTE
2243 MPEXEMPTB   lda $B000,X
2244             bpl MPEXELFTE
2245             jsr SHADELFT
2246 MPEXELFTE   asl
2247             asl
2248             bit ZEILENCTR
2249             bmi MPEXELFTA
2250             ora #1
2251             sta (ZPA),Y
2252             dey
2253             bmi MPEXELFTB
2254             and #254
2255             sta (ZPA),Y
2256 MPEXELFTB   iny
2257 MPEXELFTA   ora #3
2258             sta (ZPB),Y
2259             dey
2260             bmi MPEXEC
2261             and #254
2262             sta (ZPB),Y
2263             rts
2264             bpl MPEXELFTC
2265             ldx #63
2266             lda MAPFLG
2267             beq MPEXELFTC
2268             lda CFILLCHR
2269             and #63
2270             sta CFILLCHR
2271 MPEXELFTC   dey
2272             bpl MPEXELFTI
2273 ;
2274 MPEXEC      lda MAPPRFLG
2275             bne MPEXED
2276             dec ZEILENCTR
2277             dec ZEILENCTR
2278             jmp NEXTPRPTR
2279 ;
2280 MPEXED      inc ZEILENCTR
2281             inc ZEILENCTR
2282 MPEXEX      jmp NEXTPRPTR
2283 ;
2284 ;
2285 GETPRPTR    lda MAPCX128
2286             clc
2287             adc ATTACKSPA
2288             and #127
2289             lsr
2290             php
2291             ldx ATTACKSPA
2292             plp
2293             bcc GETPRPTRA
2294             adc #0
2295             and #63
2296             inx
2297 GETPRPTRA   stx SPALTPTR
2298             sta SPALTCTR
2299             lda ATTACKZEI
2300             sta ZEILENCTR
2301             lda #0
2302             sta MAPPRFLG
2303 ;
2304 ;
2305 NEXTPRPTR   lda ZEILENCTR
2306             bpl NXTPRPTRC
2307             cmp #255
2308             beq NXTPRPTRD
2309             lda ATTACKZEI
2310             clc
2311             adc #2
2312             sta ZEILENCTR
2313             inc MAPPRFLG
2314             bpl NXTPRPTRC
2315 NXTPRPTRD   inc ZEILENCTR
2316 ;
2317 NXTPRPTRC   lda #0
2318             sta MAPPTR+1
2319             sta MAPOUTFLG
2320             lda ZEILENCTR
2321             clc
2322             adc MAPCY128
2323             bpl NXTPRPTRE
2324             ldy MAPFLG
2325             beq NXTPRPTRE
2326             dec MAPOUTFLG
2327 NXTPRPTRE   and #127
2328             lsr
2329             php
2330             ldy #6
2331 NXTPRPTRA   asl
2332             rol MAPPTR+1
2333             dey
2334             bne NXTPRPTRA
2335             sta MAPPTR
2336             clc
2337             lda #MAPRAM>
2338             adc MAPPTR+1
2339             sta MAPPTR+1
2340 ;
2341             lda ZEILENCTR
2342             asl
2343             tax
2344             plp
2345             bcc NXTPRPTRB
2346             rts
2347             rts
2348             dec ZEILENCTR
2349             bpl NXTPRPTRB
2350             lda #$D8
2351             sta MAPPRVR
2352             ldx NEXTVRAM
2353             rts
2354             stx MAPPRVR+1
2355             bne NXTPRPTRX
2356 NXTPRPTRB   lda GPRPTRDAT,X
2357             sta MAPPRVR
2358             lda GPRPTRDAT+1,X
2359             clc
2360             adc NEXTVRAM
2361             sta MAPPRVR+1
2362 ;
2363 NXTPRPTRX   dex
2364 ;
2365 GPRPTRDAT   dat 0,0,40,0,80,0,120,0
2366             dat 160,0,200,0,240,0
2367             dat 280,320,360,400,440
2368             dat 480,520,560,600
2369 ;
2370 ;
2371 CLRNVRAM    lda #0
2372             ldy NEXTVRAM
2373             sta ZPA
2374             sty ZPA+1
2375             ldx #4
2376             jmp PFILL
2377 ;
2378 ;
2379 MAPPRCOL    lda ZSDELFLG
2380             bmi MAPPRCOLX
2381             lda ATTACKFLG
2382             beq MAPPRCOLE
2383             ldx MOMVRAM
2384             dat $2C
2385 MAPPRCOLE   ldx NEXTVRAM
2386             rts
2387             lda #255
2388             ldy #CRAM-1>
2389             sta MAPPRCOLB+1
2390             sta MAPPRCOLC+1
2391             stx MAPPRCOLB+2
2392             sty MAPPRCOLC+2
2393             lda #3
2394             sta A
2395 MAPPRCOLA   ldy #200
2396 MAPPRCOLB   ldx $FFFF,Y
2397             lda ZS1FARBDT,X
2398 MAPPRCOLC   sta $FFFF,Y
2399             dey
2400             bne MAPPRCOLB
2401             clc
2402             lda MAPPRCOLB+1
2403             adc #200
2404             sta MAPPRCOLB+1
2405             sta MAPPRCOLC+1
2406             bcc MAPPRCOLD
2407             inc MAPPRCOLB+2
2408             inc MAPPRCOLC+2
2409 MAPPRCOLD   dec A
2410             bne MAPPRCOLA
2411 MAPPRCOLX   dex
2412 ;
2413 ;
2414 SPELLCOPY   lda MOMSPELL
2415             cmp #10
2416             bcc SPELLCPYC
2417             lda V3
2418             and #254
2419             sta V3
2420             dex
2421 SPELLCPYC   tax
2422             lda SPELLIDAT,X
2423             sta V3+15
2424             txa
2425             tay
2426             ldx #SPLSHPRAM<
2427             jsr CTRTORAM
2428             lda ZPA+1
2429             sec
2430             sbc #MAPRAM>
2431             clc
2432             adc #SPLSHPRAM>
2433             sta ZPA+1
2434             ldy #63
2435 SPELLCPYB   lda (ZPA),Y
2436             sta SPELLSHPE,Y
2437             dey
2438             bpl SPELLCPYB
2439             lda V3
2440             ora #1
2441             sta V3
2442             dex
2443 ;
2444 ;
2445 SETPLRSPR   lda #0
2446             sta ATTACKFLG
2447             lda #18
2448             sta ATTACKSPA
2449             lda #6
2450             sta ATTACKZEI
2451             lda #175
2452             sta V1+3
2453             lda #102
2454             sta V1+4
2455             lda V1+1
2456             and #%11111110
2457             sta V1+1
2458             dex
2459 ;
2460 ;
2461 SETVOICE1   clc
2462             bcc SETVOICEA
2463 SETVOICE2   sec
2464 SETVOICEA   sta SETVCEDAT
2465             tya
2466             pha
2467             txa
2468             pha
2469             ldx #0
2470             bcc SETVOICEB
2471             ldx #32
2472 SETVOICEB   ldy SETVCEDAT
2473             lda SNDPRIOR,Y
2474             sta SETVCEDAT+1
2475             ldy STYP,X
2476             bmi SETVOICEC
2477             lda SNDPRIOR,Y
2478             cmp SETVCEDAT+1
2479             bcs SETVOICEX
2480             lda #255
2481             sta SNDCTR,X
2482 SETVOICEC   lda SETVCEDAT
2483             sta STYP,X
2484 SETVOICEX   pla
2485             tax
2486             pla
2487             tay
2488             dex
2489 ;
2490 SETVCEDAT   dat 0,0
2491 ;
2492 SNDPRIOR    dat 0,0,0,0,2,2,2,1,1,1,2,1,2,1
2493 ;
2494 ;
2495 PLPOSCMP    bcs PLPCMPIN
2496             lda ATTACKFLG
2497             beq PLPOSCMPA
2498             lda PLRDIR
2499             tay
2500             lsr
2501             tax
2502             lda ATTACKZEI,X
2503             cmp PLPOSCDAT,Y
2504             beq PLPOSCMPX
2505 ;
2506 PLPOSCMPA   lda PLKOLLFL
2507             beq PLPOSCMPZ
2508             lda SHAPE
2509             bne PLPOSCMPB
2510             lda PLRRAM1 ;MANN
2511             jsr FREECHK
2512             bcc PLPCMPAA
2513             asl
2514             bmi PLPOSCMPX
2515 PLPCMPAA    lda PLRRAM2
2516             jsr FREECHK
2517             bcc PLPCMPIN
2518             asl
2519             bmi PLPOSCMPX
2520 PLPCMPIN    lda PLRRAM1
2521             cmp PLRRAM2
2522             beq PLPCMPA
2523             ldx #0
2524             jsr PLPOSC1
2525 PLPCMPA     lda PLRRAM2
2526             ldx #1
2527             jsr PLPOSC1
2528 PLPOSCMPZ   clc
2529             dex
2530 PLPOSCMPX   sec
2531             dex
2532 ;
2533 PLPOSCMPB   cmp #1
2534             bne PLPOSCMPC
2535             tax
2536             lda PLRRAM1
2537             cmp PLRRAM2    ;SCHIFF
2538             bne PLPCMPBA
2539             rts
2540 PLPCMPBA    lda MAPFLG
2541             beq PLPCMPBD
2542             lda #PPCMPBDTB<
2543             sta ZPB
2544             lda #PPCMPBDTB>
2545             sta ZPB+1
2546             ldy #1
2547             bne PLPCMPBB
2548 PLPCMPBD    lda #PPCMPBDTA<
2549             sta ZPB
2550             lda #PPCMPBDTA>
2551             sta ZPB+1
2552             ldy #15
2553 PLPCMPBB    lda PLRRAM1,X
2554             and #63
2555             cmp (ZPB),Y
2556             beq PLPCMPBC
2557             dey
2558             bpl PLPCMPBB
2559             bit SHPDAM
2560             bmi PLPCMPBX
2561             dec SHPDAMCTR
2562             lda SHPDAM
2563             ora #128
2564             sta SHPDAM
2565 PLPCMPBX    sec
2566             dex
2567 PLPCMPBC    rts
2568             bpl PLPCMPBA
2569             bmi PLPCMPIN
2570 ;
2571 PPCMPBDTA   dat WASSER,OWASSER,LWASSER,RWASSER,WBRIDGE,SBRIDGE,VOID
2572             dat 47,48,51,52,53,56,57,58,59
2573 PPCMPBDTB   dat WASSER,VOID
2574 ;
2575 PLPOSCMPC   lda PLRRAM1 ;STUTE
2576             and #63
2577             cmp #VOID
2578             bne PLPCMPCB
2579 PLPCMPCA    jmp PLKOL6
2580 PLPCMPCB    lda PLRRAM2
2581             and #63
2582             cmp #VOID
2583             beq PLPCMPCA
2584             clc
2585             dex
2586 ;
2587 PLPOSCDAT   dat 0,11,0,36
2588 ;
2589 ;
2590 PLPOSC1     and #63
2591             tax
2592             lda ZSKOLDAT,X
2593             and #15
2594             cmp #8
2595             bcs PLPOSC1X
2596             asl
2597             tax
2598             lda PLPOSDAT,X
2599             sta PLPOSC1A+1
2600             lda PLPOSDAT+1,X
2601             sta PLPOSC1A+2
2602 PLPOSC1A    jsr PLKOL0
2603 PLPOSC1X    dex
2604 ;
2605 PLPOSDAT    dat PLPOSC1X,PLKOL0,PLKOL1,PLKOL2,PLKOL3,PLKOL4,PLKOL5,PLKOL6
2606 ;
2607 ;
2608 PLKOL0      lda SHAPE
2609             bne PLKOL0X
2610             lda PLRRAM1
2611             and PLRRAM2
2612             and #64
2613             beq PLKOL0X
2614             lda #2
2615             ldx #0
2616             sec
2617             jsr CALCABI
2618             lda #2
2619             ldx #2
2620             sec
2621             jsr CALCABI
2622             lda #1
2623             ldx #3
2624             sec
2625             jsr CALCABI
2626 PLKOL0X     dex
2627 ;
2628 ;
2629 PLKOL1      lda ARTEFAKTS
2630             and #%01000000
2631             bne PLKOL1X
2632             lda SICKPTR
2633             bne PLKOL1X
2634             lda RANDOM
2635             cmp #64
2636             bcs PLKOL1X
2637             lda RESISTCTR
2638             sec
2639             sbc #5
2640             sta RESISTCTR
2641             bcs PLKOL1A
2642             lda #0
2643             sta RESISTCTR
2644             lda #1
2645             sta SICKPTR
2646             lda #5
2647             jmp STATPRINT
2648 PLKOL1A     cmp #10
2649             bcs PLKOL1X
2650             ldx ICN5R2TXT
2651             ldy ICN5R2TXT+1
2652             lda #1
2653             jsr GUPSTRING
2654 PLKOL1X     dex
2655 ;
2656 ;
2657 PLKOL2      lda #0
2658             dat $2C
2659 ;
2660 PLKOL3      lda #2
2661             dat $2C
2662 ;
2663 PLKOL4      lda #3
2664 ;
2665             ldx SOGCTR
2666             beq PLKOL4A
2667             bpl PLKOL4X
2668 PLKOL4A     sta SOGFLG
2669             lda #2
2670             sta SOGCTR
2671 PLKOL4X     jmp PLKOL0
2672 ;
2673 PLKOL5      lda ARTEFAKTS
2674             and #%00100000
2675             bne PLKOL5X
2676             lda #3
2677             ldx #3
2678             sec
2679             jsr CALCABI
2680             lda #3
2681             ldx #2
2682             sec
2683             jsr CALCABI
2684 PLKOL5X     dex
2685 ;
2686 ;
2687 PLKOL6      lda #4
2688             jmp GAMEEND
2689 ;
2690 ;
2691 FREECHK     pha
2692             and #63
2693             tax
2694             cpx FREECHR
2695             bne FREECHKB
2696             ldy FREECTR
2697             beq FREECHKB
2698             dec FREECTR
2699             pla
2700             clc
2701             dex
2702 FREECHKB    ldy #255
2703             sty FREECHR
2704             lda ARTEFAKTS
2705             and #%00100000 ;A O HI
2706             beq FREECHKZ
2707             lda MAPFLG
2708             beq FREECHKA
2709             cpx #33
2710             beq FREECHKX
2711             bne FREECHKZ
2712 FREECHKA    cpx #19
2713             bcc FREECHKZ
2714             cpx #27
2715             bcs FREECHKZ
2716 FREECHKX    pla
2717             clc
2718             dex
2719 FREECHKZ    pla
2720             sec
2721             dex
2722 ;
2723 ;
2724 SEARCHEXE   lda MAPFLG
2725             bne CSEARCH
2726 ;
2727             jsr RIGHTPOS
2728             bcs MSEARCH
2729             jsr RAMPOS
2730             lda #6
2731             sta A
2732             ldy #0
2733             lda (ZPA),Y
2734             and #63
2735             cmp #MSHIPCHR
2736             beq MECHKX
2737             inc A
2738             cmp #STEEDCHR
2739             beq MECHKX
2740 ;
2741 MSEARCH     jsr MAPPOS
2742             lda #4
2743             sta A
2744 MECHKA      lda A
2745             tax
2746             asl
2747             tay
2748             lda MECHKDTA,Y
2749             sta ZPA
2750             lda MECHKDTA+1,Y
2751             sta ZPA+1
2752             lda MECHKDTB,X
2753             sta B
2754             ldx #0
2755 ;
2756 MECHKB      ldy #3
2757             lda (ZPA),Y
2758             bmi MECHKD
2759 MECHKC      lda (ZPA),Y
2760             cmp PLRPOSX,Y
2761             bne MECHKD
2762             dey
2763             bpl MECHKC
2764 MECHKX      lda A
2765             dex
2766 ;
2767 MECHKD      clc
2768             lda ZPA
2769             adc #4
2770             sta ZPA
2771             lda ZPA+1
2772             adc #0
2773             sta ZPA+1
2774             inx
2775             dec B
2776             bne MECHKB
2777             dec A
2778             bpl MECHKA
2779             lda A
2780             dex
2781 ;
2782 ;
2783 CSEARCH     jsr RIGHTPOS
2784             bcs CSEARCHA
2785             jsr RAMPOS
2786             ldy #0
2787             lda (ZPA),Y
2788             and #63
2789             cmp #CSHIPCHR
2790             beq CSEARCHC
2791             cmp #MAP
2792             beq CSEARCHD
2793             cmp #KLBUDDHA
2794             bne CSEARCHA
2795             lda #9
2796             dat $2C
2797 CSEARCHD    lda #8
2798             dat $2C
2799 CSEARCHC    lda #6
2800             tax
2801             dex
2802 ;
2803 CSEARCHA    jsr MAPPOS
2804             lda CMFPOS
2805             bmi CECHKB
2806             cmp PLRPOSX
2807             bne CECHKB
2808             lda CMFPOS+1
2809             cmp PLRPOSY
2810             bne CECHKB
2811             lda #5
2812             dex
2813 ;
2814 CECHKB      ldx #9
2815             ldy #36
2816 CECHKBA     lda ARTPOS+3,Y
2817             bpl CECHKBB
2818             lda ARTPOS+2,Y
2819             cmp CITYNR
2820             bne CECHKBB
2821             lda ARTPOS+1,Y
2822             cmp PLRPOSY
2823             bne CECHKBB
2824             lda ARTPOS,Y
2825             cmp PLRPOSX
2826             bne CECHKBB
2827             lda #3
2828             dex
2829 CECHKBB     dey
2830             dey
2831             dey
2832             dey
2833             rts
2834             bpl CECHKBA
2835             txa
2836             dex
2837 ;
2838 ;
2839 MECHKDTA    dat CPOSRAM,GPOSRAM,DPOSRAM,ARTPOS,SPELLPOS
2840 MECHKDTB    dat 41,13,6,10,10
2841 ;
2842 ;
2843 MAPPOS      lda MAPFLG
2844             bne CITYPOS
2845 ;
2846 MAPPOSA     lda #32
2847             ldy MAPSPALTE
2848             jsr MULT8BIT
2849             ora MAPCX32
2850             clc
2851             adc ATTACKSPA
2852             sta PLRPOSX
2853             bcc MAPPOSB
2854             iny
2855 MAPPOSB     sty PLRPOSX+1
2856             lda #32
2857             ldy MAPZEILE
2858             jsr MULT8BIT
2859             ora MAPCY32
2860             clc
2861             adc ATTACKZEI
2862             sta PLRPOSY
2863             bcc MAPPOSC
2864             iny
2865 MAPPOSC     sty PLRPOSY+1
2866             dex
2867 ;
2868 ;
2869 CITYPOS     lda MAPCX128
2870             clc
2871             adc ATTACKSPA
2872             sta PLRPOSX
2873             lda MAPCY128
2874             clc
2875             adc ATTACKZEI
2876             sta PLRPOSY
2877             lda #0
2878             sta PLRPOSX+1
2879             sta PLRPOSY+1
2880             dex
2881 ;
2882 ;
2883 MAPSWITCH   txa
2884             pha
2885             lda ZSANIFLG
2886             pha
2887             lda ENEMYFLG
2888             pha
2889             lda #255
2890             sta ZSANIFLG
2891             lda #0
2892             sta ENEMYFLG
2893             sta SOUNDFLG
2894             sta MAPSWFLG
2895 MAPSWA      lda MAPSWFLG
2896             beq MAPSWA
2897             lda NEXTVRAM
2898             sta MOMVRAM
2899             tya
2900             sta SCRBITZ,X
2901             lsr MONSCRFLG
2902             bcs MAPSWB
2903             lda PLRDIR
2904             sta SPRSCRFLG
2905 MAPSWB      jsr MAPPRCOL
2906             lda NEXTVRAM
2907             cmp #VRAM1>
2908             bne MAPSWC
2909             lda #VRAM2>
2910             dat $2C
2911 MAPSWC      lda #VRAM1>
2912             sta NEXTVRAM
2913             lda #1
2914             sta SOUNDFLG
2915             pla
2916             sta ENEMYFLG
2917             pla
2918             sta ZSANIFLG
2919             pla
2920             tax
2921             dex
2922 ;
2923 ;
2924 GETPOSPTR   lda MAPFLG
2925             beq GETPOSPTX
2926             lda INITFLG
2927             beq GETPOSPTA
2928             bmi GETPOSPTC
2929             lda PLRPOSX
2930             ldy PLRPOSY
2931             jmp GETPOSPTB
2932 GETPOSPTC   lda CMFPOS
2933             ldy CMFPOS+1
2934             jmp GETPOSPTB
2935 ;
2936 GETPOSPTA   lda SHAPE
2937             beq GETPOSPTD
2938             lda CITYNR
2939             asl
2940             tax
2941             lda GTPSPTDT,X
2942             sta CPLRPOS
2943             lda GTPSPTDT+1,X
2944             sta CPLRPOS+1
2945 GETPOSPTD   lda CPLRPOS
2946             ldy CPLRPOS+1
2947 GETPOSPTB   sec
2948             sbc ATTACKSPA
2949             sta MAPCX128
2950             and #31
2951             sta MAPCX32
2952             tya
2953             sec
2954             sbc ATTACKZEI
2955             sta MAPCY128
2956             and #31
2957             sta MAPCY32
2958             lda #0
2959             sta MAPZEILE
2960             sta MAPSPALTE
2961 GETPOSPTX   dex
2962 ;
2963 GTPSPTDT    dat 54,24
2964             dat 122,24
2965             dat 86,44
2966             dat 46,66
2967             dat 88,124
2968             dat 88,86
2969             dat 20,68
2970             dat 88,10
2971             dat 28,28
2972             dat 38,22
2973             dat 30,20
2974             dat 26,76
2975             dat 48,88
2976             dat 102,88
2977             dat 126,0
2978             dat 20,108
2979             dat 32,16
2980             dat 118,8
2981             dat 8,114
2982             dat 58,0
2983             dat 36,34
2984             dat 48,56
2985             dat 44,122
2986             dat 56,116
2987             dat 74,64
2988             dat 78,86
2989             dat 32,24
2990             dat 32,24
2991             dat 50,6
2992             dat 42,6
2993             dat 114,68
2994             dat 64,108
2995             dat 110,82
2996             dat 106,16
2997             dat 104,78
2998             dat 34,46
2999             dat 44,108
3000             dat 68,60
3001             dat 26,78
3002             dat 100,32
3003 ;
3004 ;
3005 CLOCK       ldx #0
3006 CLOCKA      lda MINUTE,X
3007             cmp CLOCKDAT,X
3008             bcc CLOCKB
3009             sec
3010             sbc CLOCKDAT,X
3011             sta MINUTE,X
3012             inc MINUTE+1,X
3013             ldy #1
3014             jsr CLOCKEXE
3015             jmp CLOCKA
3016 CLOCKB      inx
3017             cpx #4
3018             bcc CLOCKA
3019             jmp PCLOCK
3020 ;
3021 CLOCKDAT    dat 60,24,31,12
3022 ;
3023 ;
3024 CLOCKEXE    lda CLOCKEDTA,X
3025             sta CLOCKEJMP+1
3026             lda CLOCKEDTB,X
3027             sta CLOCKEJMP+2
3028 CLOCKEA     txa
3029             pha
3030             tya
3031             pha
3032 CLOCKEJMP   jsr CLOCKE0
3033             pla
3034             tay
3035             pla
3036             tax
3037             dey
3038             bne CLOCKEA
3039             dex
3040 ;
3041 CLOCKEDTA   dat CLOCKE0<,CLOCKE1<,CLOCKE2<,CLOCKE3<
3042 CLOCKEDTB   dat CLOCKE0>,CLOCKE1>,CLOCKE2>,CLOCKE3>
3043 ;
3044 CLOCKE0     jsr PLRSLEEP ;STD
3045             jsr PLRHUNGER
3046             jsr PLRTSTR
3047             jsr HITREST
3048             jsr PLRSICK
3049             jmp SPELLSOFF
3050 ;
3051 CLOCKE1     jsr SACKCHK ;TAG
3052             jmp UHRCHK
3053 ;
3054 CLOCKE2     jsr DOGCHK   ;MONAT
3055             jmp LOHN
3056 ;
3057 CLOCKE3     jsr PLRAGE ;JAHR
3058             jmp DOGCHK
3059 ;
3060 ;
3061 PCLOCK      lda CIA2+11
3062             ldx CIA2+8
3063             cmp PTIMEFLG
3064             beq PCLOCKX
3065             sta PTIMEFLG
3066             cmp #$12
3067             bne PCLOCKX
3068             inc PTIME+4
3069 PCLOCKX     dex
3070 ;
3071 ;
3072 MAPONSCR    lda #255
3073             sta MAPMOVDIR
3074             jsr CLRNVRAM
3075             jsr GETPRPTR
3076             jsr MAPPRINT
3077             lda #1
3078             sta MONSCRFLG
3079             ldx #0
3080             ldy #7
3081             jmp MAPSWITCH
3082 ;
3083 ;
3084 ESTOP       lda #0
3085             sta ENEMYFLG
3086             ldx #7
3087 ESTOPA      lda #255
3088             sta SMTYP,X
3089             sta SMFIXPERS,X
3090             sta SMJOBPTR,X
3091             jsr SETETIMER
3092             rts
3093             bpl ESTOPA
3094             lda V1
3095             and #1
3096             sta V1
3097             dex
3098 ;
3099 ;
3100 LIGHTCHK    lda STUNDE
3101             cmp #22
3102             bcs LIGHTCHKA
3103             cmp #4
3104             bcs LIGHTCHKB
3105 LIGHTCHKA   lda LIGHTFLG
3106             bne LIGHTCHKX
3107             jsr LIGHT1
3108             lda #1
3109             sta LIGHTFLG
3110             bne LIGHTCHKC
3111 ;
3112 LIGHTCHKB   lda LIGHTFLG
3113             beq LIGHTCHKX
3114             jsr LIGHT1
3115             lda #0
3116             sta LIGHTFLG
3117             jsr SUNSET
3118 ;
3119 LIGHTCHKC   lda ATTACKFLG
3120             bne LIGHTCHKD
3121             lda SHOPFLG
3122             bne LIGHTCHKX
3123             lda SCROLLFL
3124             bpl LIGHTCHKX
3125             jsr MAPONSCR
3126 LIGHTCHKX   dex
3127 LIGHTCHKD   jmp MAPPRCOL
3128 ;
3129 ;
3130 LIGHT1      ldx #0
3131 LIGHT1A     lda ZS1FARBDT,X
3132             asl ZS1FARBDT,X
3133             asl ZS1FARBDT,X
3134             asl ZS1FARBDT,X
3135             asl ZS1FARBDT,X
3136             lsr
3137             lsr
3138             lsr
3139             lsr
3140             ora ZS1FARBDT,X
3141             sta ZS1FARBDT,X
3142             inx
3143             bne LIGHT1A
3144             dex
3145 ;
3146 SUNSET      lda CURSES
3147             and #8
3148             bne SUNSETX
3149             lda MAXWIT
3150             sta MOMWIT
3151             lda #WIT
3152             ora BALKENFLG
3153             sta BALKENFLG
3154             jsr ARTEFSET
3155 SUNSETX     dex
3156 ;
3157 ;
3158 ARTEFSET    ldx #7
3159 ARTEFSETA   lda ARTEFSTDT,X
3160             cmp ARTEFCTR,X
3161             bcc ARTEFSETB
3162             sta ARTEFCTR,X
3163 ARTEFSETB   rts
3164             bpl ARTEFSETA
3165             dex
3166 ;
3167 ARTEFSTDT   dat 5,1,10,5,0,0,0,3
3168 ;
3169 ;
3170 SETETIMER   lda MAPFLG
3171             beq SETETIMA
3172             lda #1
3173             sta SMBITCTR,X
3174             lda SETJOBSPD
3175             sta SMSTPCTR,X
3176             dex
3177 SETETIMA    lda RANDOM
3178             and #3
3179             adc #1
3180             sta SMBITCTR,X
3181             lda RANDOM
3182             sta SMSTPCTR,X
3183             dex
3184 ;
3185 ;
3186 RAMPOS      and #127
3187             sta B
3188             tya
3189             and #127
3190             sta A
3191             lda #0
3192             sta ZPA+1
3193             ldy #6
3194             lda B
3195             lsr
3196 RAMPOSA     asl
3197             rol ZPA+1
3198             dey
3199             bne RAMPOSA
3200             sta ZPA
3201             lda A
3202             lsr
3203             clc
3204             adc ZPA
3205             sta ZPA
3206             lda ZPA+1
3207             adc #MAPRAM>
3208             sta ZPA+1
3209             dex
3210 ;
3211 ;
3212 PLPOSIT     lda MAPCX128
3213             clc
3214             adc ATTACKSPA
3215             clc
3216             adc PLPOSDATX,X
3217             sta PLRX128
3218             tay
3219             lda MAPCY128
3220             clc
3221             adc ATTACKZEI
3222             clc
3223             adc PLPOSDATY,X
3224             sta PLRY128
3225 ;
3226             jsr RAMPOS
3227             ldy #0
3228             lda (ZPA),Y
3229             sta PLRRAM1
3230             lda PLRX128
3231             clc
3232             adc PLPOSDATS,X
3233             tay
3234             lda PLRY128
3235             clc
3236             adc PLPOSDATZ,X
3237             jsr RAMPOS
3238             ldy #0
3239             lda (ZPA),Y
3240             sta PLRRAM2
3241             dex
3242 ;
3243 PLPOSDATX   dat 0,0,255,2,0
3244 PLPOSDATY   dat 255,2,0,0,0
3245 PLPOSDATS   dat 1,1,0,0,1
3246 PLPOSDATZ   dat 0,0,1,1,1
3247 ;
3248 ;
3249 RESTLOAD    lda LDDIR
3250             and LDDIR+7
3251             bmi RESTLOADX
3252             jsr LDMAPEXE
3253             jmp RESTLOAD
3254 RESTLOADX   dex
3255 ;
3256 ;
3257 LOADSTOP    lda LDDIR
3258             and LDDIR+7
3259             bmi LOADSTOPA
3260             lda LDBYTECTR
3261             beq LOADSTOPA
3262             lda EOMFLG
3263             bmi LOADSTOPA
3264             jsr UNTALK
3265 LOADSTOPA   ldx #0
3266             stx LDBYTECTR
3267             rts
3268             stx LDDIR
3269             stx LDDIR+7
3270             dex
3271 ;
3272 ;
3273 RIGHTPOS    lda MAPCX128
3274             clc
3275             adc ATTACKSPA
3276             lsr
3277             php
3278             asl
3279             tay
3280             lda MAPCY128
3281             clc
3282             adc ATTACKZEI
3283             lsr
3284             php
3285             asl
3286             plp
3287             bcs RIGHTPOSX
3288             plp
3289             dex
3290 RIGHTPOSX   plp
3291             sec
3292             dex
3293 ;
3294 ;
3295 PLRSLEEP    dec SLEEPCTR
3296             bpl PLRSLEEPX
3297             lda SLEEPCTR
3298             cmp #255
3299             bne PLRSLEEPA
3300             lda #1
3301             jmp STATPRINT
3302 PLRSLEEPA   cmp #250
3303             bne PLRSLEEPX
3304             lda #50
3305             jsr ASLEEP
3306 PLRSLEEPX   dex
3307 ;
3308 ;
3309 PLRHUNGER   lda HUNGERCTR
3310             bmi PLRHUNGA
3311             dec HUNGERCTR
3312             bne PLRHUNGX
3313             lda #3
3314             jmp STATPRINT
3315 PLRHUNGA    lda #1
3316             bne PLRSICKIN
3317 PLRHUNGX    dex
3318 ;
3319 ;
3320 PLRSICK     lda SICKPTR
3321             beq PLRSICKX
3322             ldx #2
3323             sec
3324             jsr CALCABI
3325             lda #3
3326 PLRSICKIN   ldx #3
3327             sec
3328             jsr CALCABI
3329 PLRSICKX    dex
3330 ;
3331 ;
3332 PLRTSTR     lda TEMPSTR
3333             beq PLRTSTRX
3334             dec TEMPSTR
3335             bne PLRTSTRX
3336             lda OLDSTR
3337             sta MAXSTR
3338             lda #STR
3339             ora BALKENFLG
3340             sta BALKENFLG
3341 PLRTSTRX    dex
3342 ;
3343 ;
3344 PLRAGE      inc AGE
3345             lda AGE
3346             cmp #80
3347             bcc PLRAGEX
3348             lda #1
3349             jmp GAMEEND
3350 PLRAGEX     dex
3351 ;
3352 ;
3353 HITREST     lda CURSES
3354             and #8
3355             bne HITRESTX
3356             lda HUNGERCTR
3357             bmi HITRESTX
3358             lda SICKPTR
3359             bne HITRESTX
3360             dec HITPTCTR
3361             bpl HITRESTX
3362             lda #2
3363             sta HITPTCTR
3364             ldx #3
3365 HITRESTA    txa
3366             pha
3367             lda #1
3368             clc
3369             jsr CALCABI
3370             pla
3371             tax
3372             rts
3373             bpl HITRESTA
3374 HITRESTX    dex
3375 ;
3376 ;
3377 SPELLSOFF   lda #0
3378             sta SPELLCTR+8
3379             sta FEARFLG
3380             sta SPELLCTR+1
3381             sta SPELLCTR+3
3382             lda #1
3383             sta SLOWSPEED
3384 ;
3385             lda MOMARMOR
3386             cmp #4
3387             bcc SPELLOFFA
3388             cmp #8
3389             bcc SPELLOFFB
3390 SPELLOFFA   lda V2
3391             and #247
3392             sta V2
3393 ;
3394 SPELLOFFB   lda MIRRORFLG
3395             beq SPELLOFFX
3396             lda #0
3397             sta MIRRORFLG
3398             lda V1
3399             and #%11101111
3400             sta V1
3401             lda #255
3402             sta SMTYP+4
3403 SPELLOFFX   dex
3404 ;
3405 ;
3406 DOGCHK      lda RANDOM
3407             cmp #240
3408             bcc DOGCHKX
3409             lda WATCHDOG
3410             beq DOGCHKX
3411             dec WATCHDOG
3412             lda #0
3413             ldy #WATCHDOG-WAREN
3414             jsr EQUIPPR
3415 DOGCHKX     dex
3416 ;
3417 ;
3418 SACKCHK     lda RANDOM
3419             cmp #240
3420             bcc SACKCHKX
3421             lda SACK
3422             beq SACKCHKX
3423             dec SACK
3424             bne SACKCHKB
3425             ldx #5
3426             lda #0
3427 SACKCHKA    sta FOOD,X
3428             rts
3429             bpl SACKCHKA
3430 SACKCHKB    lda #1
3431             ldy #SACK-WAREN
3432             jsr EQUIPPR
3433 SACKCHKX    dex
3434 ;
3435 ;
3436 UHRCHK      lda RANDOM
3437             cmp #240
3438             bcc UHRCHKX
3439             lda UHR
3440             beq UHRCHKX
3441             dec UHR
3442             lda #2
3443             ldy #UHR-WAREN
3444             jsr EQUIPPR
3445 UHRCHKX     dex
3446 ;
3447 ;
3448 EQUIPPR     pha
3449             lda #1
3450             jsr NPRINT
3451             tya
3452             ldx #EQUIPTEXT<
3453             ldy #EQUIPTEXT>
3454             jsr GUPSTRING
3455             pla
3456             ldx EQPCHKTXT
3457             ldy EQPCHKTXT+1
3458             jmp GUPSTRING
3459 ;
3460 ;
3461 LOHN        lda SLAVE
3462             beq LOHNX
3463             ldy #20
3464             jsr MULT8BIT
3465             pha
3466             tax
3467             tya
3468             pha
3469             jsr GOLDAB
3470             pla
3471             tay
3472             pla
3473             tax
3474             bcc LOHNA
3475 ;
3476             lda #1
3477             jsr NPRINT
3478             clc
3479             jsr BYTEASC
3480             lda #11
3481             jsr NORMTEXT
3482             lda #0
3483             jsr LOHNPR
3484 LOHNX       dex
3485 ;
3486 LOHNA       dec SLAVE
3487             ldx MOMWEAPON
3488             ldy MOMARMOR
3489             lda #0
3490             cpx #16
3491             bcs LOHNB
3492             sta WAREN,X
3493 LOHNB       cpy #8
3494             bcs LOHNC
3495             sta WAREN+16,Y
3496 LOHNC       lda #19
3497             sta MOMWEAPON
3498             lda #8
3499             sta MOMARMOR
3500             jsr PLRONSCR
3501             lda #1
3502 ;
3503 LOHNPR      ldx LOHNTXT
3504             ldy LOHNTXT+1
3505             jmp GUPSTRING
3506 ;
3507 ;
3508 POSTOBLCK   ldx #2
3509 POSTOBLA    lda PLRPOSX,X
3510             sta A,X
3511             and #%00011111
3512             lsr
3513             sta A+1,X
3514             lda PLRPOSX+1,X
3515             ldy #5
3516 POSTOBLB    lsr
3517             ror A,X
3518             dey
3519             bne POSTOBLB
3520             rts
3521             rts
3522             bpl POSTOBLA
3523             dex
3524 ;
3525 ;
3526 CURSELOAD   pha
3527             stx FOUNDVAR
3528             lda CURSELDDT,X
3529             sta NTRACK
3530             lda CURSELDDT+1,X
3531             sta NSECTOR
3532             lda #1
3533             ldx #ZSRAM2<
3534             ldy #ZSRAM2>
3535             jsr LOAD
3536             ldx FOUNDVAR
3537             lda CURSELDDT+2,X
3538             sta NTRACK
3539             lda CURSELDDT+3,X
3540             sta NSECTOR
3541             lda CURSELDDT+4,X
3542             ldx #0
3543             ldy NEXTVRAM
3544             jsr LOAD
3545             ldx FOUNDVAR
3546             lda CURSELDDT+5,X
3547             sta ZPA
3548             lda NEXTVRAM
3549             sta ZPA+1
3550             lda #$A0
3551             sta ZPB
3552             pla
3553             sta ZPB+1
3554             ldx #3
3555             jmp PCOPY
3556 ;
3557 CURSELDDT   dat 34,9,34,10,3,0
3558             dat 34,8,35,12,4,160
3559 ;
3560 ;
3561 RANDOMIZE   lda RNDMDAT
3562             pha
3563             lda RNDMDAT+1
3564             pha
3565             sty RNDMDAT
3566             stx RNDMDAT+1
3567             lda RANDOM
3568             and RNDMDAT
3569             cmp RNDMDAT+1
3570             bcc RANDOMIZA
3571             lsr
3572 RANDOMIZA   tay
3573             pla
3574             sta RNDMDAT+1
3575             pla
3576             sta RNDMDAT
3577             tya
3578             dex
3579 ;
3580 RNDMDAT     dat 0,0
3581 ;
3582 ;
3583 MAINTIMER   bcc WAITTIMER
3584             sta CIA1+4
3585             sta CIA1+5
3586             lda #%00001001
3587             sta CIA1+14
3588             dex
3589 ;
3590 WAITTIMER   lda CIA1+14
3591             lsr
3592             bcs WAITTIMER
3593             dex
3594 ;
3595 ;
3596 CTRTORAM    lda #0
3597             sta ZPA+1
3598             stx ZPA
3599             tya
3600             ldy #6
3601 CTRTORAMA   asl
3602             rol ZPA+1
3603             dey
3604             bne CTRTORAMA
3605             clc
3606             adc ZPA
3607             sta ZPA
3608             lda ZPA+1
3609             adc #MAPRAM>
3610             sta ZPA+1
3611             dex
3612 ;
3613 ;
3614 DISKCHK     lda #35
3615             ldy #16
3616             sta NTRACK
3617             sty NSECTOR
3618             jsr TALK
3619             ldy #0
3620 DISKCHKB    jsr IECIN
3621             iny
3622             bne DISKCHKB
3623             dex
3624 ;
3625 ;
3626 DISKWAIT    sta DISKWDAT
3627             jsr DSKWTEXE
3628             bcs DISKWAITA
3629             dex
3630 DISKWAITA   lda #2
3631             jsr NORMTEXT
3632             lda DISKWDAT
3633             jsr NORMTEXT
3634             lda #1
3635             jsr NORMTEXT
3636 DISKWAITB   jsr WAITSTICK
3637             beq DISKWAITC
3638             lda DISKWDAT
3639             sec
3640             dex
3641 DISKWAITC   jsr DSKWTEXE
3642             bcs DISKWAITA
3643             dex
3644 ;
3645 DSKWTEXE    jsr DISKCHK
3646             ldy DISKWDAT
3647             cmp DISKWDAT,Y
3648             bne DSKWTEXEA
3649             tya
3650             clc
3651             dex
3652 DSKWTEXEA   tya
3653             sec
3654             dex
3655 ;
3656 DISKWDAT    dat 0 0 0 '0123'
3657 ;
3658 ;
3659 NORMTEXT    ldx NTEXTTXT
3660             ldy NTEXTTXT+1
3661             jmp GUPSTRING
3662 ;
3663 STATPRINT   pha
3664             ldx STATTXT
3665             ldy STATTXT+1
3666             jsr PRSTRING
3667             ldx STATTXT
3668             ldy STATTXT+1
3669             pla
3670             jmp GUPSTRING
3671 ;
3672 ;
3673 GOLDAB      stx A
3674             sta B
3675             lda GOLD
3676             sec
3677             sbc A
3678             sta A
3679             lda GOLD+1
3680             sbc B
3681             bcc GOLDABX
3682             sta GOLD+1
3683             lda A
3684             sta GOLD
3685 GOLDABX     dex
3686 ;
3687 ;
3688 GOLDZU      clc
3689             adc GOLD
3690             sta GOLD
3691             txa
3692             adc GOLD+1
3693             sta GOLD+1
3694             bcc GOLDZUX
3695             lda #255
3696             sta GOLD
3697             sta GOLD+1
3698 GOLDZUX     dex
3699 ;
3700 ;
3701 PCLOCKSET   bcs PCLOCKRD
3702             lda CIA2+14
3703             and #127
3704             ldx COUNTRY
3705             beq CLOCKSETA
3706             ora #128
3707 CLOCKSETA   nop   ;128ER fEHLER
3708 ;
3709             ldx #3
3710             lda CIA2+15
3711             and #127
3712             sta CIA2+15
3713 CLOCKSETB   lda PTIME,X
3714             sta CIA2+8,X
3715             rts
3716             bpl CLOCKSETB
3717             dex
3718 ;
3719 PCLOCKRD    ldx #3
3720 CLOCKRDA    lda CIA2+8,X
3721             sta PTIME,X
3722             rts
3723             bpl CLOCKRDA
3724             dex
3725 ;
3726 ;
3727 STATUEEXE   ldx CBUDDAT+2
3728             ldy CBUDDAT+3
3729             jsr CTRTORAM
3730             ldx #1
3731             lda CBUDDAT+4
3732             bmi STATEXEA
3733             ldx #64
3734 STATEXEA    and #127
3735             stx A
3736             tax
3737             ldy #0
3738 STATEXEB    lda CBUDDAT+5
3739             sta (ZPA),Y
3740             lda ZPA
3741             clc
3742             adc A
3743             sta ZPA
3744             bcc STATEXEC
3745             inc ZPA+1
3746 STATEXEC    rts
3747             bpl STATEXEB
3748             dex
3749 ;
3750 ;
3751 DOORSET     bcs DOORSETB
3752             ldx #9
3753             lda #0
3754 DOORSETA    sta DOORSTAT,X
3755             rts
3756             bpl DOORSETA
3757             jsr DRSTZPLD
3758 DOORSETAA   jsr DRSTGTRAM
3759             bne DOORSETAD
3760 DOORSETAB   bit C
3761             bvc DOORSETAC
3762             jsr DRSTGETDT
3763             lda DOORSTAT,Y
3764             ora ZWEIERPOT,X
3765             sta DOORSTAT,Y
3766 DOORSETAC   inc A
3767 DOORSETAD   jsr DRSTZPINC
3768             bne DOORSETAA
3769             dex
3770 ;
3771 DOORSETB    jsr DRSTZPLD
3772 DOORSETBA   jsr DRSTGTRAM
3773             bne DOORSETBC
3774             lda C
3775             and #191
3776             sta C
3777             jsr DRSTGETDT
3778             lda DOORSTAT,Y
3779             and ZWEIERPOT,X
3780             beq DOORSETBB
3781             lda C
3782             ora #64
3783             sta C
3784 DOORSETBB   inc A
3785             lda C
3786             ldy #0
3787             sta (ZPA),Y
3788 DOORSETBC   jsr DRSTZPINC
3789             bne DOORSETBA
3790             dex
3791 ;
3792 DRSTGTRAM   ldy #0
3793             lda (ZPA),Y
3794             sta C
3795             and #63
3796             cmp #WDOOR
3797             beq DRSTGTRMX
3798             cmp #SDOOR
3799 DRSTGTRMX   dex
3800 ;
3801 DRSTZPLD    lda #MAPRAM<
3802             ldy #MAPRAM>
3803             sta ZPA
3804             sty ZPA+1
3805             lda #16
3806             sta B
3807             lda #0
3808             sta A
3809             dex
3810 ;
3811 DRSTGETDT   lda A
3812             lsr
3813             lsr
3814             lsr
3815             tay
3816             lda A
3817             and #7
3818             tax
3819             dex
3820 ;
3821 DRSTZPINC   inc ZPA
3822             bne DRSTZPICX
3823             inc ZPA+1
3824             dec B
3825 DRSTZPICX   dex
